2016-12-15 38 views
1

我的.htaccess看起來是這樣的:的Apache的.htaccess URL重寫條件導致404消息

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC] 
RewriteRule ^VIN/(.*)/(.*)/ index.php?action=vin&view=$1&vin=$2 

我可以去我的網址(foo.com)和它的作品就好了。但是,如果我去foo.com/VIN/vinDetails/12345,我得到一個404錯誤。

我是新來的URL重寫,並且到處尋找嘗試和解決這個問題,但是我總是想不起來。

+0

嘗試:'foo.com/VIN/vinDetails/12345 /'後面的斜槓 – anubhava

+0

這有效......有沒有辦法在規則中捕捉到這種情況?另外,我的CSS/js/jpe?g ....行不行...有什麼想法? – Brds

回答

0

你可以讓斜線可選:

Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC] 
RewriteRule ^VIN/([^/]+)/([^/]+)/?$ index.php?action=vin&view=$1&vin=$2 [L,QSA,NC] 

CSS/JS載荷是由於您使用相對路徑。確保這些文件的路徑始於http://或斜槓/否則您可以添加此僅低於<head>您網頁的HTML部分:<base href="/" />讓每一位相對URL是從基本URL解決,而不是從當前頁面的URL。

+0

我在頭部添加了,並加載了CSS。我甚至仔細檢查每個css文件的@import,url(,src =,../和./,並修正了這些... 但是,現在,我的JavaScript不工作。任何方式告訴htaccess使所有的JavaScript負載都發生在根目錄(/)? – Brds

+0

''適用於所有的'css/js/image'文件如果'js'沒有加載,那麼在Chrome中休息dev工具禁用緩存並檢入網絡標籤什麼是404網址你要得到什麼 – anubhava

+0

開始 - 看起來最麻煩的東西是控制檯中的10行,「資源解釋爲樣式表,但用MIME類型傳輸text/html:「http://foo.com/VIN/vinDetails/css/[Files 1-10] .css」 – Brds