【问题标题】:RewriteRule matches regular expression but isn't forwardingRewriteRule 匹配正则表达式但不转发
【发布时间】:2023-04-03 17:40:01
【问题描述】:

我“只是”尝试像

一样转换 URL

[AWEBSITE]/bgh/articles/10/08/2009/left-4-dead-2-scavenge-mode-announced

[AWEBSITE]/bgh/left-4-dead-2-scavenge-mode-announced

正则表达式匹配正确(使用http://www.regular-expressions.info/javascriptexample.html 测试),但没有发生任何事情。我尝试了类似的规则,改用 RedirectMatch 301:

RedirectMatch 301 ^/bgh/articles/([0-9]{2})/([0-9]{2})/([0-9]{4})/([^/]+)$ /bgh/$4?

并且 URL 转换正确,但留下一个“?”在末尾。如果我从该行中删除问号,它会正确转换 URL,但会在末尾重新附加一个查询字符串。这是我在 .htaccess 中使用的内容:

AddType application/x-httpd-php53 .php

RewriteEngine on

RewriteRule ^bgh/articles/([0-9]{2})/([0-9]{2})/([0-9]{4})/(.*)$ bgh/$4

RewriteCond %{HTTP_HOST} ^awebsite\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.awebsite\.com$
RewriteRule ^/?$ "http\:\/\/www\.awebsite\.com\/bgh"

AddHandler application/x-httpd-php5 .html

另外,我正在使用 Drupal 和似乎是旧版本的 Apache(例如,QSD 标志破坏了我的 .htaccess)。我正在拔头发,我希望这里缺少一些非常简单的东西。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite drupal


    【解决方案1】:

    试试这个:

    AddType application/x-httpd-php53 .php
    AddHandler application/x-httpd-php5 .html
    
    RewriteEngine on
    
    RewriteRule ^bgh/articles/([0-9]{2})/([0-9]{2})/([0-9]{4})/(.*)$ bgh/$4? [L,NC,R=302]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?awebsite\.com$ [NC]
    RewriteRule ^/?$ http://www.awebsite.com/bgh [L,R]
    

    【讨论】:

    • 这当然看起来更干净,但不幸的是它仍然根本没有转换 URL。你对我做错了什么有什么看法?它可能会帮助我继续寻找答案。
    【解决方案2】:

    假设您使用的是 Apache httpd 2.4,您可以将 [QSD] 标签添加到 RewriteRule 的末尾以删除(丢弃)查询字符串。如果您使用的是 2.2 或更早版本,则 [QSD] 标志不可用。然而,那尾随 ?实际上并没有伤害任何东西,而且大多数网站用户从不查看 URL。如果您这样做是为了想象中的“SEO”好处,那么您几乎肯定是在浪费时间而没有真正的好处。

    还要注意,您不需要(也不应该)转义 RewriteRule 目标中的字符。因此:

    RewriteCond %{HTTP_HOST} ^(www\.)?awebsite\.com$
    RewriteRule ^/?$ "http://www.awebsite.com/bgh"
    

    【讨论】:

    • 我应该提到,我这样做的原因是因为我将实际更改 Drupal 后端中的 URL,并且我想确保 Google 仍然可以遵循旧链接,直到它选择新的、更短的 URL。所以你不认为尾随?在索引新 URL 时会有所不同吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多