2016-08-02 55 views
2

我需要採取以下刪除PHP擴展和替換/帶問號

http://localhost/gbm/file/services

的URL並將其發送給

http://localhost/gbm/file.php?param=services

隨着代碼在.htaccess我有現在,它只是刪除.php擴展名,但不替換/並將其他字符串添加到id=

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

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

## hide .php extension snippet 

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

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

# To remove www header 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 
RewriteRule ^gbm/(\w+)/(.*) /gbm/$1.php/?param=$2 
+0

嘗試更換[L](最後)使用[QSA(查詢字符串追加)標誌是這樣的:'重寫規則^(。*?)/ $ $ 1嗎?。 php [QSA]' - [L]標誌告訴服務器停止處理規則,所以它沒有達到最後一個規則,它應該追加'param'來查詢字符串 – Kleskowy

+0

但是,它並沒有將參數追加到查詢字符串 –

回答

1

您可以使用:

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

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

# To remove www header 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^http://%1%{REQUEST_URI} [L,R=301,NE] 

RewriteCond %{THE_REQUEST} /(\w+)\.php\?param=([^\s&]+) [NC] 
RewriteRule^%1/%2? [R=301,L,NE] 

## hide .php extension snippet 

# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R=301,NE,L] 

# handle ?param=... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/gbm/$1\.php -f 
RewriteRule ^(.+)/([\w-]+)/?$ $1.php?param=$2 [L,QSA] 


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

它使這樣的URL ... http:// localhost/gbm/file –

+0

當我在瀏覽器中輸入'http://localhost/file.php?param = services'時,在我的.htaccess中使用這些規則它會被重定向到'http:// localhost/gbm/file/services' – anubhava

+0

嘗試做反之亦然。我需要在內部使用'http:// localhost/gbm/file/services'到'http://localhost/file.php?param = services' –