【问题标题】:htaccess URL's redirect 301 to lowercase with exceptionshtaccess URL 将 301 重定向为小写,但有异常
【发布时间】:2020-12-09 11:00:18
【问题描述】:

我想在我的 Apache 配置文件中使用 RewriteMap lc int:tolower 将我所有的 URL 更改为小写,并且在我的 htaccess 中有这个正则表达式:

RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]

.. 并且完美地工作!但是我有我不想更改为小写的库(带有文件)和目录(例如:带有所有子目录或库的“图像”:“Functions/Liberties/Image/Resize.php”)......如何成功了吗? 我尝试了RewriteRule ^(Images) - [NC,QSA,L],但不接受它......知道如何制作这个例外吗?

提前谢谢你,对不起我的英语!

【问题讨论】:

  • 添加更多 RewriteConds 检查 REQUEST_URI 是否不是您不想重写的那些。
  • 可能你在这下面有更多的规则。最好在 RewriteCond 中使用 THE_REQUEST 来排除匹配的模式。

标签: php regex .htaccess redirect


【解决方案1】:

您可以先使用 -indexes 禁用目录列表,现在,如果请求的 URI 是现有目录或文件,您可以使用 !-d!-f 参数跳过重写规则,如下所示:

Options -Indexes

RewriteEngine On
RewriteCond %{REQUEST_URI} [A-Z]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]

【讨论】:

    【解决方案2】:

    谢谢大家...我用这个来解决它:

    RewriteRule ^Admin/ - [L]
    RewriteRule ^Apps/ - [L]
    RewriteRule ^Bank/ - [L]
    RewriteRule ^Downloads/ - [L]
    RewriteRule ^Functions/ - [L]
    RewriteRule ^Images/ - [L]
    RewriteRule ^Pages/ - [L]
    RewriteRule ^Scripts/ - [L]
    RewriteRule ^Styles/ - [L]
    

    ...我把它放在前面:

    RewriteCond %{REQUEST_URI} [A-Z]
    RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]
    

    对于我和我的案例工作,我希望这是正确的决定。再次感谢!

    【讨论】:

    • 每当您添加新文件或文件夹时,您都必须编辑 .再次访问。
    猜你喜欢
    • 2011-09-24
    • 2014-08-11
    • 2021-02-08
    • 2013-12-21
    • 2015-03-04
    • 2016-09-28
    • 2023-03-25
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多