。htaccessで多くのURL書き換えルールを試しましたが、今は行き詰まっています。このURLを変更する必要があります。
products.php?id=31
に
products/31
利用した:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
RewriteCond %{THE_REQUEST} \s/+products(?:\.php)?\?id=([0-9]+) [NC]
RewriteRule ^ products/%1? [R,L]
RewriteRule ^products/([0-9]+)/?$ products.php?id=$1 [L,QSA]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} \s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
これを使用すると、次の結果が得られます。
products/31
しかし、すべての画像とCSSが表示されません。何か案は?
これを試して:
RewriteEngine on
RewriteRule ^(.*) $1 [L]
RewriteRule ^products/$ products.php?id=31 [L]
このコードはうまく機能しています。詳細: http://www.askapache.com/htaccess/htaccess.html
これを試して:
RewriteRule ^(.*)\/$ $1.php [NC]
表示されない画像とCSSについて。 URLがproducts/31のように書き換えられた場合、phpスクリプト自体がルートに存在していても、html内の相対リンクがproducts /に関連していることに注意してください。 htmlはブラウザによって解釈され、ブラウザはproducts /フォルダにいると判断するためです。絶対URL( http:// hostname / で始まるか、rootに相対するため/で始まる)を使用するか、またはそれらを書き換えることもできます。