2012-09-01 54 views
0

我在使用.htaccess文件進行URL重寫時出現問題,問題如下。使用/在url模式下的URL重寫問題

當我把下面的代碼在我的.htaccess文件服務器上

RewriteRule ^/?xyz http://google.com [R=301] 

和我通話網址MY_WEB_DOMAIN.COM/xyza在瀏覽器重定向我到google.com(預期)

而且如果我打電話url MY_WEB_DOMAIN.COM/xyz/abc我得到404錯誤..

是不是應該重定向到谷歌兩種情況? 或其他東西影響我的代碼與我在我的模式中使用/(斜線)?

在此先感謝。

+0

a)'?'是什麼?在那裏做和b)你可以嘗試追加一個'通配符':RewriteRule ^/xyz。* http://google.com [R = 301] – arkascha

+0

/? =零或一個/ – Patriks

+0

Patriks:我知道什麼是'?'是用來表達一個正則表達式,但在這種情況下它沒有任何意義。 – arkascha

回答

0

重寫工作正常。

我在服務器端檢查了重寫URL的標題並直接調用了url。 我發現只有一個變化。

in direct url它包含redirect_url和request_uri是相同的。對於重寫URL都是不同的。 (我想oxwall可能會使用REQUEST_URI處理..在那裏,因爲它並不像我想成爲..

所以,我只是讓他們同在PHP重寫URL。通過將線 $ _ SERVER ['REQUEST_URI '] = $ _ SERVER ['REDIRECT_URL'];

然後完成:)

1

arkascha是正確的。使用這個:

RewriteRule ^/?xyz.* http://www.google.com [R=301] 

這個/?使第一個/可選的,在這種情況下,這是asinine。但。*是你想要捕捉任何匹配/ xyz -----

如果arkascha發帖作爲答案,你應該接受它。 我測試了這個,它工作正常。如果它不起作用,請在htaccess中檢查您在此規則之上的哪些行。你可能會有衝突。

+0

嗨凱青,謝謝你的回覆。我嘗試了「RewriteRule^/?xyz。* http://www.google.com [R = 301]」 然後會發生什麼,如下所示。 1.當我呼叫url「xxxxx.com/xyza」或「xxxxx.com/xyza/anything」(在瀏覽器中) 它將我重定向到谷歌(如預期) 2.當我呼叫url「xxxxx.com/ xyz「或」xxxxx.com/xyz/anything「 它將我重定向到」xxxxx.com/oxwall/404「(因爲它不應該) – Patriks

+0

{oxwall是我的public_html文件夾中的一個文件夾,其中包含一個(php)框架已安裝命名爲oxwall} *此規則以上沒有任何規則,除了某些類似於「RewriteEngin on」 – Patriks

+0

此.htaccess文件位於主public_html文件夾中,該文件夾是主文件夾。 oxwall文件夾內有另一個.htaccess文件,我認爲它不應該影響我們的工作。 我對不對? – Patriks