2011-03-15 30 views
1

是否有可能使url重寫被強制?如何強制mod_rewrite重寫規則顯示爲重寫,即使輸入了未重寫的url

下面是一個有用的例子,http://localhost/home/http://localhost/index.php?page=home但url保持與用戶相同。

我無法工作的是迫使http://localhost/index.php?page=home顯示爲 http://localhost/home/

我不知道我是否使用了正確的術語,但是我希望它能夠讓您輸入非重寫的url,我希望重寫的url能夠出現在用戶的瀏覽器中。

這是我迄今爲止的工作:

RewriteEngine on 
Options +FollowSymLinks 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond $1 !^(index\.php) 
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)/?$ index.php?page=$1&a=$2&b=$3 [L,NC,QSA] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond $1 !^(index\.php) 
RewriteRule ^([a-zA-Z0-9_]*)/([a-zA-Z0-9_]*)$ index.php?page=$1&a=$2 [L,NC,QSA] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond $1 !^(index\.php) 
RewriteRule ^([a-zA-Z0-9_]*)$ index.php?page=$1 [L,NC,QSA] 
+0

無法重新加載頁面,您無法更改用戶輸入的網址。我不認爲重寫規則會在這種情況下幫助你。 (請參閱http://stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page) – tawman 2011-03-16 13:45:00

+0

我認爲你採取了錯誤的方式:如果你仔細想想,你只是不想要用戶直接訪問'index.php',對嗎?只要做一個**'404' **並在**'404' **顯示一些**真正**的鏈接。好404有消息「你的意思是'http:// localhost/home /'」? ... – 2011-11-29 09:40:51

回答

1

這就是[R]標誌是什麼。如果你有一個正確的重寫,你會想在你的RewriteRule的末尾添加[R]到你的其他標誌。

+0

如果我輸入「http:// localhost/home /」,那麼[R]是否使它成爲「http://localhost/index.php?page = home」?如果是這樣,這是相反的效果。當我向用戶的瀏覽器輸入「http://localhost/index.php?page = home」時,我希望它變成「http:// localhost/home /」。我想這樣做,以便我的鏈接工作是否啓用mod_rewrite。 _在附註中,我不知道爲什麼在這個評論的鏈接之後有分號,忽略它們... _ – TheAutumnAurora 2011-03-15 16:27:19

0

嘗試添加一些代碼到你的index.php。

看看你的答案$_SERVER['SCRIPT_URL']變量。當您在瀏覽器中輸入「localhost/index.php?page = home」時,SCRIPT_URL應該等於'/index.php'。如果你輸入「localhost/home」,SCRIPT_URL應該等於'/ home'。你可以在你的PHP腳本中檢查一下,並從那裏進行適當的重定向。

+0

至於解決問題的.htaccess,我仍然在尋找。 – Jazzerus 2011-11-28 20:47:10