2014-04-03 55 views
1

我有以下目錄結構:重寫規則未正確執行

public_html/sites/site_a/ 
public_html/sites/site_b/ 

我想寫一個.htaccesssite_a用於重寫的URL。我在site_a根目錄下面的坐姿:

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule \?page=([a-z]*) $1 [L,QSA] 

基本上我想有我的網址:

http://hostname/sites/site_a/?page=products 

顯示爲:

http://hostname/sites/site_a/products 

儘管如此,這並不似乎工作。該頁面顯示完整的網址。

+0

您不能像這樣在重寫規則中訪問GET參數。實際上,它們不是網址的一部分。這是記錄。但是您可以評估模塊爲此提供的QUERY_STRING。閱讀優秀的文檔,它都在那裏解釋! – arkascha

回答

1

嘗試:

RewriteEngine On 
RewriteBase /sites/site_a/ 

RewriteCond %{THE_REQUEST} \ /+sites/site_a/\?page=([^&\ ]+) 
RewriteRule^%1? [L,R] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ ?page=$1 [L,QSA] 
在htaccess文件

site_a目錄。

+0

OMG ...起初我開始認爲我的主人不支持mod_rewrite ......但是,您先生,是一位紳士和一位學者。非常感謝。現在我要研究這個答案,並逐個找出你做了什麼,爲什麼你做了。謝謝!!! – JTFRage

+0

其實現在有一個新問題。這個'http:// hostname/sites/site_a /?page = products'成爲這個:'http:// hostname/sites/site_a/products' ...這是正確的。但是當我點擊我網站上的另一個鏈接時,它顯示了這個:http:// hostname/sites/site_a/products?page = products' – JTFRage

+0

@JTFRage第一條規則需要'?page = something'的請求,並且**重定向瀏覽器**到沒有查詢字符串的URL。重定向改變了URL地址欄中的內容。第二條規則在內部將其重寫**返回查詢字符串 –