0

我有一个使用以下样式的页面的网站:

index.php?page=X&id=Y

例如,对于博客,它将是

index.php?page=blog&id=65

, 对于一张图片它可能是

index.php?page=picture&id=26

我正在尝试设置一个重写规则,以便人们可以使用 mysite.com/page 或 mysite.com/page/id 但在传递两个参数时会出现问题。

出于某种原因,它会将我重定向到正确的页面,然后立即重新加载不带参数的同一页面,即它会加载index.php?page=blog&id=65然后立即重新加载index.php?page=blog,这是没有用的。

我正在使用的代码:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&id=$2 [L]

任何建议将不胜感激。谢谢。

4

2 回答 2

0

解决此问题的最佳方法是将所有请求重定向到路由器页面(通常是index.php文件),并让它包含从那里实际请求的文件。它使您可以更好地控制重定向到哪里,并允许比 RegEx 可以轻松实现的更复杂的规则。

至于你的具体问题。它可能是重新加载窗口的 JavaScript,或者您Location:的 PHP 代码中某处有一些标头。

于 2012-05-16T17:13:01.857 回答
0

阅读 mod_rewrite 文档,特别是 [QSA](查询字符串附加)标志。如果没有这个,如果您在替换字符串中指定新参数,重写引擎将转储现有参数。有了它,它将附加旧的。

于 2012-05-16T19:03:46.423 回答