質問

ローカルでアプリを開発しています(ドメイン名 <!> lt; mydomain <!> gt; .dev の下)。

わかりやすいURLを使用するために、.htaccessを次のように設定しました。

RewriteEngine on
# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://example.com/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

正常に動作します。面倒なことに、オンラインに行くときはそれほど良くありません:

http://example.com/issue/my-slug/#23はGET変数を返しません。なぜですか?

役に立ちましたか?

解決

過去の経験に基づいた私の推測では、RewriteBaseは、おそらく共有サーバーまたは他の非標準構成上にあるためです。

RewriteEngine on

#Set base as doc root.
RewriteBase /

# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]
RewriteRule ^about/$ about.php [NC,L]
RewriteRule ^issues/$ issues.php [NC,L]
RewriteRule ^issue/([a-z0-9_\-]+)/$ issue.php?slug=$1 [NC,L]

SetEnv PHP_VER 5
IndexIgnore *
Options +FollowSymLinks

他のヒント

表示されません

RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://mydomain.eu/$1/?%{QUERY_STRING}[NC,R,L]

はそのURLと一致する必要がありますが、外部リダイレクトを実行するのは[R]フラグを持つ唯一のURLです。その行をコメントアウトして、リダイレクトを行うアプリケーションの他の部分がないことを確認してください。私の推測はそこにあるということです。

置換URLとフラグの間に空白があります。次のように、最初のルールを単純化することもできます。

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top