0

私はローカルでアプリを開発しています(ドメイン名<mydomain> .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変数を返しません。なんで?

4

3 に答える 3

0

見えない

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

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

于 2009-04-30T22:48:14.543 に答える
0

私の推測では、過去の経験に基づくと、おそらく共有サーバーまたはその他の非標準構成を使用しているため、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
于 2009-04-30T22:49:52.933 に答える
0

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

RewriteRule ^([a-z0-9._-]+/)*[a-z0-9_-]+$ %{REQUEST_URI}/ [NC,R=301,L]
于 2009-12-23T17:08:59.350 に答える