2013-06-26 78 views
0

我想爲我的應用程序製作乾淨的URL。所以我在.htaccess文件中編寫了下面的代碼。mod_rewrite使多個模式的乾淨的URL

RewriteEngine On 
Options +FollowSymLinks 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.*)/(.*)/?$ index.php?p=$1&id=$2 [NC,L] 
RewriteRule ^(.*)/?$ index.php?p=$1 [NC,L] 

正如你所看到的,我可能在查詢字符串中至多有2個變量; pid。如果我在.htaccess文件中只有一個規則(具有1個變量的規則),一切都會好起來的。但是,當我添加第一條規則(帶有2個變量的規則)時,似乎所有css,js和圖像文件都將消失。
我寫的CSS,圖像和js文件中這樣說:

./directory_name/file_name

請幫我做清潔的URL與多個規則。

+0

檢查你的CSS/JS鏈接。 'RewriteCond's應該導致那些不被重寫。 –

回答

0

你的代碼更改爲:

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

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?p=$1&id=$2 [QSA,L] 

RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L] 
+0

我在本地運行應用程序,在應用您的代碼後,沒有頁面不顯示 –

+0

對不起,有一個錯字,只是修復它。現在試試。 – anubhava

0

如果你遵循Front-Controller Pattern,(即一切都通過index.php)我會鼓勵你使用FallbackResource

FallbackResource /index.php 

它比mod_rewrite當量(如被看見在anubhava的答案)更簡潔,高性能: