1

のようなURLを書き換えたい

mysite.com/eng?sentence=cat

次のように表示します。

mysite.com/eng/cat

書き換えだけでリダイレクトしたくありません。そこで、見つけた書き換えルールを変更してみました。編集前の例には、もともと R=301 が含まれていました。

RewriteCond %{THE_REQUEST} ^GET\ /eng\?sentence=([^&\s]+) [NC]
RewriteRule ^eng\?sentence=$ /english/%1? [R=302,NC,L]

しかし、2 行目から R=301 を削除すると、500 エラーが発生します。

この種の書き換えルールをどのように記述できますか? 私はこの正規表現が苦手で、これに精通していません

私のhtaccessファイル:

# Use PHP5.3 Single php.ini as default
AddHandler application/x-httpd-php54s .php
AddType application/x-httpd-php .htm .html

Options -Indexes -MultiViews

ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

RewriteEngine on

RewriteCond %{THE_REQUEST} ^GET\ /eng\?sentence=([^&\s]+) [NC]
RewriteRule ^eng\?sentence=$ /english/%1? [R=302,NC,L]



RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=604800, public"
</FilesMatch>
4

1 に答える 1

0

行末アンカーを使用する$か、それ以外の場合は返信してくださいRewriteCond

RewriteCond %{THE_REQUEST} ^GET\s/eng\?sentence=([^&\s]+) [NC]
RewriteRule ^ /eng/%1? [NC,L,R=302]

おそらく 500 は、.htaccess の他のルールによるループが原因です。.htaccess質問に完全なコードを投稿することをお勧めします。

于 2013-10-11T11:10:06.977 に答える