2017-04-25 131 views
0

好吧,URL重寫是噩夢,我有很多天。
我試圖重寫URL,如:多個重寫規則不起作用

  • example.com/playground.php?room=abc123TOexample.com/room/abc123
  • example.com/index.php?room=abc123&action=joinTOexample.com/join/abc123

我能夠成功地重寫第一個URL(如第一情況),但無法正確重寫第二個URL。它正在被重寫爲example.com/room/join/abc123。我知道第一條規則是適用於這兩種情況,然後執行htaccess停止。但那麼如何設法得到理想的解決方案呢?

的.htaccess

RewriteBase/
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME}.php !-f 
RewriteRule ^room/([A-Za-z0-9]+)$ playground.php?room=$1 [L] 

RewriteCond %{REQUEST_FILENAME}.php !-f 
RewriteRule ^join/([A-Za-z0-9]+)$ index.php?room=$1&action=join [L] 
+0

所以重寫規則一個微小的錯誤,你已經在你的例子正在所示,你想再添加兩條規則來做你在問題中所要求的內容? – Thakkie

+0

只有我的第一條規則正在工作。第二個規則的輸出類似於'example.com/room/join/abc123',但我想'example.com/join/abc123' – Ayan

+0

第二個規則給出輸出'index.php?room = abc123&action = join',並且應該踢入' example.com/join/abc123' – Thakkie

回答

0

你的問題是不是在URL重寫,但它與你的playground.php做。它具有相對的URL而不是絕對的URL。請將join/abc123更改爲/join/abc123

也有是在你的.htaccess

你應該改變

RewriteCond %{REQUEST_FILENAME}.php !-f 

RewriteCond %{REQUEST_FILENAME} !-f