2012-07-26 76 views
1

編輯:重定向使用htaccess文件

我想重定向URL

到:www.example.com/location/sydney

來自:www.example.com/rss.php?pickup=sydney

問題是我不能得到$ _GET [ '皮卡']值從www.example.com/location/sydney,也位置也將改變爲例如:它可能是凱恩斯,倫敦等我有一個名爲rss.php的文件,我會從$ _GET ['pickup']的價值。 我嘗試這樣做: - Redirect /location http://deals.vroomvroomvroom.com.au/rss.php

,但它給了我一個網址: - http://deals.vroomvroomvroom.com.au/rss.php/sydney當我在www.example.com/location/sydney

+0

你想重寫或重定向嗎?你是否希望用戶看到/使用一個像「http:// www.example.com/location/sydney」這樣的URL,但是要處理這個URL的代碼是帶有一個在GET中的位置的元素的index.php?或者你是否試圖請求「http://www.example.com/?location = sydney」導致用戶在他們的地址欄中輸入「http:// www.example.com/location/sydney」 ?或者你真的想要兩個? – ghbarratt 2012-07-26 13:20:41

回答

1

放入位置目錄中的.htaccess文件有以下幾點:

RewriteEngine On 
RewriteRule (.*) ../index.php?location=$1&e=1 [L,QSA] 

這假定您要使用請求到的index.php /位置位於目錄位置目錄上方

如果您還需要重定向(www.abc.com/?location=sydneywww.abc.com/location/sydney)才能工作,那麼我認爲最好的方法是將以下內容添加到(單獨)中。位於DocumentRoot中的htaccess文件:

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^(.*)location=([^&]*)(.*) [NC] 
RewriteCond %{QUERY_STRING} !&e=1 [NC] 
RewriteRule ^(.*)$ $1/location/%2?%1%3 [R=301,L,NE] 
+0

感謝您的回覆,我有鏈接這是''.abc.com /?location = sydney'我想重定向到'www.abc.com/location/sydney'也位置可以任何東西。所以我應該創建'位置'文件夾以及? srry if im wrong im new to this。 – 2012-07-27 07:34:46

+0

好的,如果有人在瀏覽器地址欄中輸入「www.abc.com/?location = sydney」,你希望瀏覽器重定向到(更改地址欄中的URL)到'www.abc.com/location/sydney',但是你也想實際使用文件DocumentRoot/index.php來回答同樣的請求,就好像請求是針對'www.abc.com/?location = sydney'而沒有任何Apache規則,對吧?所以基本上你想要重寫和重定向,對吧? – ghbarratt 2012-07-27 13:43:56

+0

是@ghbarratt怎麼做在 ? – 2012-07-27 13:59:24

0

是否啓用mod_rewrite的網址類別? sudo a2enmod rewrite

當你點擊刷新時,tail -f /var/log/apache2/error.log的輸出是什麼?

+0

對不起,我是新手,你可以更詳細地解釋一下如何檢查輸出?在哪裏檢查? – 2012-07-26 12:59:59

+0

你在哪個平臺上? – Eamorr 2012-07-26 13:00:24

+0

我的項目是基於php並託管在linux服務器 – 2012-07-26 13:02:41

1

試試這個在您的.htaccess文件

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 
+0

它不工作:( – 2012-07-26 13:19:12

0

有兩種可能出現的問題,你可能有:

1)啓用了mod_rewrite?使用以下命令檢查:apache2ctl -M | grep rewrite - 如果已啓用,您應該看到類似於rewrite_module (shared)的一行。如果不是 - 啓用它。

2)你有權限使用.htaccess文件嗎?檢查您的虛擬主機的配置 - 這應該包含以下行的AllowOverride,與此類似:

<Directory "/var/www/your/site/"> 
    Options FollowSymLinks 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 

現在,在我的例子mod_rewrite的是行不通的,因爲的AllowOverride設置爲無。檢查你需要在這裏:http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride但你基本上需要將它設置爲任何其他有效的選項,這不是None,否則Apache將完全忽略.htaccess文件。

0

位置可以是任何東西...我試過follwoing代碼,但它不工作。

如果你想從/location.php?location=sydney重定向到/location/sydney,你重寫規則是圍繞走錯了路。唉,你不能根據查詢參數重寫。

+0

所以我應該怎麼做? – 2012-07-26 13:30:42

1

試試這個

RewriteEngine On 
RewriteCond  %{QUERY_STRING} ^location=1$ 
RewriteRule  (.*)    $1?  [R=permanent] 
+0

http://stackoverflow.com/questions/3457022/mod-rewrite-remove-query-string-from-url – 2012-07-26 13:27:13