如何允许访问者使用此链接(www.example.com/news?id=34)以查看(www.example.com/index.php?page=news&id=34)
现在我隐藏了我的PHP文件的扩展名,以使链接看起来不错。当访问者访问(www.example.com/news)时,他们可以看到该页面(www.example.com/index.php?page=news)。但是,当他们访问(www.example.com/news?id=12)时,他们会收到404错误。
此时,PHP无法识别id参数。这是我目前在.htaccess文件中的内容
Options +FollowSymlinks
RewriteEngine on
# catch request with no querystring like /Home
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]
# make other requests with a non-empty query string go to /index.php?id=XXXXX
RewriteCond %{QUERY_STRING} ^.*$
RewriteRule ^$ /index.php?id=$1 [QSA,L]
答案 0 :(得分:0)
第一条规则的条件失败,因为查询不为空。尝试没有这个条件,但改为使用以下条件:
RewriteCond $1 !=index.php
RewriteRule ^([^/]+)$ /index.php?page=$1 [L]
答案 1 :(得分:0)
您的第二个测试模式(^$
)仅匹配用户未放入任何路径信息但包含查询字符串的情况(例如 www.example.com/?id= 12 )。另请注意,反向引用$1
在该规则中也没有任何价值。
最简单的解决方案就是将这两个规则结合起来,因为您可以使用QSA
标志来为您附加id=#
部分:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /index.php?page=$1 [QSA,L]