Apache 从URL中删除问号

Apache 从URL中删除问号,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我对htaccess和mod_重写之类的东西没有太多的经验,但是如何删除?从一个类似于:site.com/?page的URL,那么它看起来像site.com/page 我现在正在尝试: RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(index\.php)?\?([^&\ ]+) RewriteRule ^ /%1? [L,R=301] RewriteCond %{REQUEST_FILENAME} !-f Rewri

我对htaccess和mod_重写之类的东西没有太多的经验,但是如何删除?从一个类似于:site.com/?page的URL,那么它看起来像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索引页,url中没有其他内容。

您的反向引用不正确。您希望匹配来自%{the_REQUEST}的第二个分组,而不是第一个,即index.php。因此,您的第一条规则应该如下所示:

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

第二组是[^&\]+匹配项。

根据您的问题,请引用:

…要如何移除该组件?从类似以下内容的URL: site.com/?页面看起来像site.com/page

这可以做到:

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

请不要在标题中使用伪标记。我们有真正的标签。第一个RewriteCond是什么意思?@shiplu.mokadd.im定义mod_rewrite的条件?我认为表达式/索引\.php?\?[^&\]+可能是错误的,但我不确定。。。