簡體   English   中英

RewriteRule匹配正則表達式但不轉發

[英]RewriteRule matches regular expression but isn't forwarding

我“只是”試圖像這樣轉換網址

[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)。 我正在拔頭發,希望這里真的很簡單。

嘗試這個:

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]

假設您正在使用Apache httpd 2.4,則可以將[QSD]標記添加到RewriteRule的末尾以刪除(丟棄)查詢字符串。 如果您使用的是2.2或更早版本,則[QSD]標志不可用。 但是,那尾隨? 實際上並沒有傷害任何東西,並且大多數網站用戶無論如何也不會查看該URL。 如果您這樣做是為了獲得假想的“ SEO”收益,那么您幾乎肯定會浪費時間,而沒有實際的實際收益。

還要注意,您不需要(也不應該)在RewriteRule的目標中轉義字符。 從而:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM