【问题标题】:Rewrite .htaccess regex url重写 .htaccess 正则表达式 url
【发布时间】:2010-01-25 17:24:34
【问题描述】:

我有一个 .htaccess 文件,里面有这个:(不是我写的)

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?bla=$1 [L,QSA]

问题网址http://localhost/index/test “index”部分似乎与 web 目录中的“index.php”匹配,并且 Rewrite 失败。
问题:出了什么问题,我该如何解决?

【问题讨论】:

  • “重写失败”是什么意思?您正在匹配任何内容并将其路由到 index.php?bla=anything,所以您可能对正在发生的事情感到困惑? index.php 中的 print_r($_GET) 并查看是否设置了 bla。
  • 当索引在 URL 中时,我不希望 "RewriteCond %{REQUEST_FILENAME} !-f" 为真,文件不称为 "index",而是称为 "index.php"。

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

启用的选项MultiViews 可能会导致此行为。尝试禁用它:

Options -MultiViews

【讨论】:

    【解决方案2】:

    尝试:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    
    RewriteRule ^(.*)$ index.php?bla=$1 [L,QSA]
    

    【讨论】:

    • 使 CSS 文件无法加载。不过感谢您的回答。
    • 您需要一个排除文件和目录。您的规则意味着,它必须是文件或目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多