【问题标题】:Remove question mark from URL从 URL 中删除问号
【发布时间】:2012-11-27 12:19:35
【问题描述】:

我对 htaccess 和 mod_rewrite 或任何东西没有太多经验,但是如何删除 ?从一个看起来像这样的 URL: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 索引页面,网址中没有任何其他内容。

【问题讨论】:

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

标签: apache .htaccess mod-rewrite


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 2014-05-27
    • 2013-09-04
    • 2016-01-09
    • 1970-01-01
    • 2015-06-02
    • 2018-07-28
    • 2016-03-29
    相关资源
    最近更新 更多