2012-12-08 67 views
1

這是我目前的.htaccess文件:試圖更改樣式表URL

RewriteEngine On 

RewriteBase /application/ 

RewriteRule (.*)/css/(.*).css www/$1/css/$2.css 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) index.php?p=$1 

所以在這裏我的最終目標是讓

http://localhost/application/guestbook/css/style.css 

轉發到

/application/www/guestbook/css/style.css 

這幾乎工作,但當我傾銷$ _GET時,我可以看到他正在尋找的網址是

www/www/guestbook/css/style.css 

有人可以告訴我爲什麼它有2次www /?我該如何解決它?

+0

你的第一組搶奪整個URL的開頭,即「www/directory」而不僅僅是「directory」。快速修復將改變你的重寫規則爲'/(.*?)/css/(.*).css'。 '。*'之後的'?'表明它是不合理的,即儘可能少地匹配。 – primo

+0

使用RewriteRule /(.?)/css/(.*).css www/$ 1/css/$ 2.css它不會改變的網址例如與/在它前面它不起作用。使用RewriteRule(。?)/ css /(.*).css www/$ 1/css/$ 2.css的結果如下:www/k/css/style.css/css/style.css所以只需要最後一個字母的留言。任何想法? –

+0

分組不是'(。?)',它需要是'(。*?)'。第一個確實只匹配最後一個字母。 – primo

回答

2

下面是做到這一點的一種方法:

修訂

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} ^.*/(\w+/\w+/\w+\.css)$ 
RewriteRule .* application/www/%1 [L] 

將重定向這樣的:

http://localhost/application/anything1/anything2/anything3.css

http://localhost/application/www/anything1/anything2/anything3.css

+0

嘿,我已經嘗試了這個,但它不起作用(404錯誤):(可能出現我的apache出現問題嗎? –

+0

你說得對,我的答案有錯,我修改了。是一個錯誤,請複製粘貼在瀏覽器地址欄中輸入的URL以及消息錯誤 –

+0

中顯示的URL http://localhost/application/guestbook/css/style.css是一個即時消息並且錯誤是500內部服務器錯誤 –