从网址中删除问号

时间:2012-12-10 04:22:06

标签: apache .htaccess mod-rewrite

我对htaccess和mod_rewrite没有太多经验,但是如何删除?来自一个类似于site.com/?page的网址,因此它看起来像site.com/page

我现在正在尝试这个:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index\.php)?\?([^&\ ]+)
RewriteRule ^ /%1? [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]

但它只是将所有内容重定向到site.com索引页,而网址中没有任何其他内容。

2 个答案:

答案 0 :(得分:0)

您的反向引用不正确。您希望匹配%{THE_REQUEST}中的第二个分组,而不是第一个分组(index.php)。所以你的第一条规则应该是这样的:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index\.php)?\?([^&\ ]+)
RewriteRule ^ /%2? [L,R=301]
# 2 here--------^

第二组将是([^&\ ]+)匹配。

答案 1 :(得分:0)

根据你的问题,引用:

“...如何从URL中删除?,如下所示: site.com/?page所以它看起来像site.com/page? “

这样做:

RewriteEngine On
RewriteRule .*  /%{QUERY_STRING}? [L]