Mod rewrite mod_重写新手-这是正确的吗?

Mod rewrite mod_重写新手-这是正确的吗?,mod-rewrite,apache2,Mod Rewrite,Apache2,这应该接受任何uri,并将其作为查询字符串的一部分发送给将处理它的脚本 RewriteEngine On RewriteCond %{REQUEST_URI} !(css.php|gif|jpe?g|png|css|js|json|xml|ico)$ RewriteRule ^(.*)(/)?$ index.php?where=$1 [QSA,L] 我这样问是因为它在某些服务器上工作,而在其他服务器上不工作。在某些情况下,它会忽略整个事情,就好像url重写已关闭一样,而在另一些情况下,只要上传

这应该接受任何uri,并将其作为查询字符串的一部分发送给将处理它的脚本

RewriteEngine On
RewriteCond %{REQUEST_URI} !(css.php|gif|jpe?g|png|css|js|json|xml|ico)$
RewriteRule ^(.*)(/)?$ index.php?where=$1 [QSA,L]

我这样问是因为它在某些服务器上工作,而在其他服务器上不工作。在某些情况下,它会忽略整个事情,就好像url重写已关闭一样,而在另一些情况下,只要上传带有上述内容的.htaccess,它就会报告一个错误的请求。

BTH我会稍微更改一下这条规则:

RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(css.php|gif|jpe?g|png|css|js|json|xml|ico)$
RewriteRule ^(.*)/?$ index.php?where=$1 [QSA,L]
  • 在RewriteCond模式中添加了
    \.
    ,以确保它仅适用于具有此类扩展名的文件(否则该模式也将匹配结尾有该文本的文件,即
    /something/mygif
    /something/my.gif

  • 在RewriteRule模式中,将
    (/)
    替换为
    /
    ——它在功能上没有区别,但在资源上有点轻


  • 返回主题:

    • 如果它“像关闭url重写一样忽略整个过程”,则很可能.htaccess文件不受支持/启用(或者它应该具有不同的名称,如指令所配置的名称:例如,
      AccessFileName ht.access

      要检查它,请尝试将一些其他指令放入.htaccess,看看它是否有效(例如:
      errordocument404/404.php
      DirectoryIndex.php
      等)

    • 如果它“在上载带有上述内容的.htaccess时报告错误请求”,则很可能不允许将这些指令放在.htaccess中(要求
      AllowOverride All
      或至少
      AllowOverride FileInfo
      ),或者未启用mod_rewrite

      检查Apache的错误日志——它应该有提到这一时刻的条目