2013-07-25 100 views
1

我使用.htaccess文件下面的代碼URL重寫不工作

DirectoryIndex home.php 
Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^$ - [L] 
RewriteRule ^/?([^\./]*)[:;,\.]*$ $1.php 
RewriteRule ^([a-zA-Z0-9_,-]+)/([0-9]*)$ listing.php?business=$2 
  1. 此代碼隱藏在僅根文件夾中的PHP文件的擴展名爲.php,但我想將其應用於所有子文件夾中的PHP文件。

  2. 我也想拒絕使用原始URL訪問,即URL包含.php擴展名。

  3. 我也想要第三條規則應該工作。

回答

1

這種替換代碼:

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

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

RewriteRule ^([a-zA-Z0-9_,-]+)/([0-9]+)$ listing.php?business=$2 [L,QSA] 

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s\?] [NC] 
RewriteRule^- [F] 

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

當進入原始URL,即該URL包含.php擴展名,這將重定向到同一頁面。但是當輸入這樣的帶有「.php」擴展名的URL時,我想發送一個「Page Not Found-404」錯誤。 –

+0

好吧,現在檢查編輯。 – anubhava

+0

這是行得通的,但我想再做一次修改:輸入網址「www.domain.com/some_text/」或「www.domain.com/A_DIRECTORY_NAME」時,將重定向到listing.php。我不想要它,只有輸入「www.domain.com/some_text/A_NUMBER」 –