我的网站使用以下格式的网页:
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]
任何建议将不胜感激。感谢。
答案 0 :(得分:0)
解决此问题的最佳方法是将所有请求重定向到路由器页面(通常是index.php
文件),并让它包含实际请求的文件。它为您提供了很多 更好地控制您重定向的位置,并允许比RegEx更容易实现的更复杂的规则。
至于你的具体问题。它可以是重新加载窗口的JavaScript,也可以是PHP代码中的某些Location:
标题。
答案 1 :(得分:0)
阅读mod_rewrite文档,特别是[QSA](查询字符串追加)标志。如果没有这个,如果在替换字符串中指定新的参数,重写引擎将转储现有参数。有了它,它将附加旧的。