2

私はいつも .htaccess を嫌います。すべてのリクエストが index.php を経由する Web サイトを作ろうとしていますが、URL を www.sample.com/home のようにしたいと考えています。事実上、その URL は www.sample.com/index.php?page=home をロードします

今、私は持っています

 RewriteRule ^/([a-z0-9-]+) /index.php?page=$1 [NC,PT,L]

regexr テストで動作することが示されていても、動作しません。一時的に r=301 に変更したので、リダイレクトが表示され、www.sample.com/home が www.sample.com/index.php?page=/index.php にリダイレクトされていることに気付きました :(

何かご意見は?

私はこれをしばらく探していましたが、実際に機能する解決策が見つかりません。これが私の最初の目的地だったわけではありません。

4

1 に答える 1

3

ルールを次のように変更します。

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteRule ^([a-z0-9-]+)/?$ /index.php?page=$1 [QSA,L,NC]

参考:Apache mod_rewrite の紹介

于 2013-10-29T20:43:47.957 に答える