2014-10-22 48 views
0

我在我的項目中兩個網址,我想翻譯使用mod_rewrite麻煩匹配對查詢字符串模式mod_rewrite的

  • hall/booking_message.php?booking_id=11>hall/booking_message/11
  • hall/venues.php?city=delhi&city_value=1&locality=mehrauli&locality_value=82>hall/venues/city/delhi/city_value/1/locality/mehrauli/82

到目前爲止,我有以下.htaccess這適用於hall/booking.php?hall_id=5&booking_date=2014-10-23&session=Morninghall/description_banquethall.php?hall_id=5但不是上面列出的這兩個網址:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase /hall/ 

## don't touch /forum URIs 
RewriteRule ^forums/ - [L,NC] 

## hide .php extension snippet 

RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?city=([^&\s]+)&city_value=([^&\s]+)&locality=([^&\s]+)&locality_value=([^&\s]+) [NC] 
RewriteRule^%1/%2/%3/%4/%5? [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+?)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ $1.php?city=$2&city_value=$3&locality=$4&locality_value=$5 [L,QSA] 

RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?hall_id=([^&\s]+)&booking_date=([^&\s]+)&session=([^&\s]+) [NC] 
RewriteRule^%1/%2/%3/%4? [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+?)/([^/]+)/([^/]+)/([^/]+)/?$ $1.php?hall_id=$2&booking_date=$3&session=$4 [L,QSA] 

# To externally redirect /dir/foo.php?id=123 to /dir/foo 
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?hall_id=([^&\s]+) [NC] 
RewriteRule^%1/%2/? [R,L] 

# To internally forward /dir/foo/12 to /dir/foo.php?id=12 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/([^/]+)/?$ $1.php?hall_id=$2 [L,QSA] 

# To externally redirect /dir/foo.php?id=123 to /dir/foo 
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\?booking_id=([^&\s]+) [NC] 
RewriteRule^%1/%2/? [R,L] 

# To internally forward /dir/foo/12 to /dir/foo.php?booking_id=12 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/([^/]+)/?$ $1.php?booking_id=$2 [L,QSA] 

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^GET\s([^.]+)\.php\s [NC] 
RewriteRule^%1 [R,L] 

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*?)/?$ $1.php [L] 
+0

您應該使用像CakePHP的或笨一個PHP框架這個任務在.htaccess中編寫所有路由是一個麻煩的過程。 – 2014-10-22 05:24:56

+0

你已經有了一個處理'hall/venues/city/delhi/city_value/1/locality/mehrauli/82'的規則嗎? – anubhava 2014-10-22 14:09:28

回答

0

把這個鏈接在你的.htaccess,然後檢查你的鏈接廳/ booking_message/11

RewriteRule ^(.*)/([.*]+)/([.*]+)/?$ $1.php?booking_message=$2&booking_id=$3 [L,QSA] 
+1

由於在OP的問題中沒有'booking_message ='參數,它不回答OP的要求。 OP希望內部URL爲:'/hall/booking_message.php?booking_id = 11' – anubhava 2014-10-22 05:50:50

+0

此規則不起作用RewriteRule ^(。*)/([。*] +)/([。*] +)/?$ $ 1 .php?booking_message = $ 2&booking_id = $ 3 [L,QSA],我想要像我的網址/ booking_message/11 – raushan 2014-10-22 06:01:29

+0

我翻譯我的一個網址像hall/booking_message/11通過使用相同的規則RewriteCond%{THE_REQUEST}^GET \ s ([^。] +)\。php \?booking_id =([^&\ s] +)[NC] RewriteRule ^%1 /%2? [R,L] RewriteCond%{REQUEST_FILENAME}!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule ^(。+?)/([^ /] +)/?$ $ 1.php?booking_id = $ 2 [L,QSA] – raushan 2014-10-22 06:44:52