2017-10-19 155 views
1

我想改寫這個網址:重寫.htaccess文件,但不工作

http://salessurface.com/overseas/sub_page_details/MBBSAbroad/MBBS-in-UK/7

到:

http://salessurface.com/overseas/sub_page_details.php?sup_menu=MBBS%20Abroad&menu=MBBS-in-UK&main_menu_id=7

我嘗試添加以下到.htaccess文件:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)$ overseas/sub_page_details.php?sup_menu=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ overseas/index.php?sup_menu=$1&menu=$2 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/([^/]+)$ overseas/index.php? 
sup_menu=$1&menu=$2&main_menu_id=$3 [L] 

但它不工作。

如何完成重寫?

+1

作爲第二和第三個是相同的正則表達式,最後一個'RewriteRule'不應該是'^([^ /] +)/([^ /] +)/([^ /] +)$' – feareoc

+0

雖然不起作用 –

+0

如果您刪除了最後兩條規則並且只保留第一條規則,是否可以使用? – feareoc

回答

0

你並不需要的情況下,你可以做到這一點只有一個規則:

RewriteEngine on 
RewriteRule ^overseas/sub_page_details/(.*)/(.*)/(.*) /overseas/sub_page_details.php?sup_menu=$1&menu=$2&main_menu_id=$3 [NC,L] 

這會採取的路徑sub_page_details後,把第一部分sup_menu,第二部分在menu和第三部分在main_menu_id

但我注意到,在您的示例網址中,您在重寫的網址中使用了MBBS%20Abroad,但在重寫的網址中使用了MBBSAbroad,如果這不是打字錯誤,你需要使用一個不太具體重寫該選項:

RewriteEngine on 
RewriteRule ^overseas/sub_page_details/MBBSAbroad/(.*)/(.*) /overseas/sub_page_details.php?sup_menu=MBBS\ Abroad&menu=$1&main_menu_id=$2 [NC,L] 

這將硬編碼的URL的一部分sup_menu,並採取MBBSAbroad之後的路徑,並把第一部分中menu和第二部分main_menu_id