我的.htaccess文件看起來像:的.htaccess重寫URL休息的CSS/JavaScript的/其他文件
RewriteEngine On
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]
現在當我包括我的CSS文件:
<link href="sitewide.css" rel="stylesheet" type="text/css" />
這是行不通的。 JavaScript也是如此。
我的.htaccess文件看起來像:的.htaccess重寫URL休息的CSS/JavaScript的/其他文件
RewriteEngine On
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]
現在當我包括我的CSS文件:
<link href="sitewide.css" rel="stylesheet" type="text/css" />
這是行不通的。 JavaScript也是如此。
考慮重寫僅不存在的路徑,例如如果文件或目錄存在 - 不要重寫它。
WordPress使用這個重寫他們的永久鏈接,我認爲這是非常好的例子:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
正如你可以看到他們有重寫條件,排除現有的文件/目錄。
那.htaccess
文件重定向任何不包括/
到index.php
。 考慮重寫它只捕捉確實需要的路徑。
或者,你可以用表示爲「最後」(L
)規則啓動文件:
RewriteRule ^/javascript.js$ $0 [L]
這將迫使阿帕奇評估這種重寫規則,然後暫停該請求所有其他規則。因此,您的.js
或.css
文件將得到正確處理,但是您必須爲每個此類文件在.htaccess
中創建一個新條目。我會強烈建議我對這一個第一個建議。
嘗試這種情況:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]*)$ index.php/?node=$1 [L]
我一直在到處尋找一個簡單的解決方案,它不會讓我硬編碼爲我所有的相對路徑,像IMGS,CSS,JavaScript的baselinks ...
所以這裏有雲,之間添加此<head>
標籤您有問題的網頁:
<base href='http://www.mydomain.com/'>
這將使你的相對路徑鏈接將與此基礎鏈路啓動。就那麼簡單。
<base>
標記指定文檔中所有相對URL的基本URL /目標。將<base>
標記作爲<head>
元素中的第一個元素,以便頭部分中的其他元素使用<base>
元素中的信息。
它適合你嗎?
謝謝,這看起來就像是我需要什麼,我也試過,但它返回一個404沒有找到,不過我已經使用RewriteEngine敘述在 的RewriteCond%{REQUEST_FILENAME} -f 的RewriteCond%{REQUEST_FILENAME}! - d RewriteRule ^([^ /] *)$ index.php /?node = $ 1 [L] 它似乎工作。 – 2012-04-22 23:28:14