2016-02-18 7 views
1

我有我知道的是一個愚蠢的問題,但在SO和其他地方的答案不告訴我應該如何做。使用htaccess更新瀏覽器默認mod_rewrite字符串

我有一個的.htaccess的mod_rewrite這需要字符串,並使用它作爲index.php?nm=<value>一個值,如下所示:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?pagenm=$1 [QSA] 

我想設置的htaccess表明即使沒有pagenm值被設定我的網頁URI,例如:www.mywebsite.com/確實加載得很好,因爲index.php頁面有一個catch規則,如果沒有給出pagenm值來使用默認頁內值,但我想要的是瀏覽器URL被更新(希望不刷新,重定向,加載頁面兩次)

如果沒有給定值,那麼htaccess的重寫,以welcome使:

www.mywebsite.com 

將始終顯示在瀏覽器中

www.mywebsite.com/welcome 

我已經試過DirectoryIndex welcome但這不更新URL。

+1

這是通過定義一個重定向,但由於服務器處理重定向,你真的不加載頁面的兩倍。您從服務器獲取標題,然後瀏覽器ping新的地址並點擊它。像「重定向」/「」/ welcome「'應該就足夠了。另一種方法是使用JS來重寫歷史記錄,但這是爲了不考慮重定向而花費的大量精力。 – martinczerwi

+0

我該如何告訴htaccess我將默認的'index'頁面呈現爲mod_rewrite'/ welcome'並重新加載,如果沒有mod_rewrite字符串存在?只要最終的PHP頁面沒有加載兩次就是我期望避免的。乾杯 – Martin

+0

我剛剛編輯了評論,而你問:) – martinczerwi

回答

1

嘗試下列規則:

RewriteEngine On 

# if landing page redirect to /welcome 
RewriteRule ^/?$ /welcome [L,R=302] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?pagenm=$1 [QSA,L] 
+1

這就是我正在尋找的,我不確定空字符串檢查的'^ /?$'語法。非常感謝,anubhava! – Martin