2

我想在 .htaccess 中使用此代码制作漂亮的 URL(contact.php?id=something to contact/something),但是当我使用它时,我的浏览器显示错误 310 - 重定向过多。

Options +FollowSymlinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^contact/(.*)$ contact.php?id=$1 [L]

RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^contact.php$ /contact/%1? [R,L]

有人可以帮助我,有什么问题吗?谢谢。

4

1 回答 1

3

您的问题是您将contact/重定向到contact.php,然后将contact.php重定向到contact(参见无限循环?)

要解决此问题,您可以在第一条规则中添加另一个无用的参数(另一件事是您应该在最后一条规则中使用 R=301 而不仅仅是 R 标志,这意味着重定向是永久性的,而不是临时的,但这不会导致任何问题):

Options +FollowSymlinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^contact/(.*)$ contact.php?id=$1&r=0 [L]

RewriteCond %{QUERY_STRING} ^id=([^\&]*)$
RewriteRule ^contact.php$ /contact/%1? [R=301,L]
于 2012-08-30T15:00:11.953 回答