2014-07-09 36 views
1

我的.htaccess包含:mod_rewrite的:我的鏈接重定向後不再工作

RewriteEngine On 

# remove trailing slash 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/$ /subdirectory/$1 [L,R=301] 

# capture user name 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(\w+)$ index.php?user=$1 

ErrorDocument 404 /subdirectory/index.php 

我的目的是:

所有這一切工作正常,但是當有人進入像URL我的問題是...

http://domain.com/subdirectory/james/yyy 
http://domain.com/subdirectory/james/yyy/zzz 
http://domain.com/subdirectory/james/yyy/zzz/nonexistent.html 

...他們重定向到我的/subdirectory/index.php,在索引中的所有鏈接.PHP像:

<link rel="stylesheet" type="text/css" href="something.css"> 
<script type="text/javascript" src="lib/something.js"></script> 
<img src="images/picture.jpg"> 

...獲取詬病的喜歡的東西:

<link rel="stylesheet" type="text/css" href="/james/yyy/zzz/something.css"> 
<script type="text/javascript" src="/james/yyy/zzz/lib/something.js"></script> 
<img src="/james/yyy/zzz/images/picture.jpg"> 

什麼我可以做錯嗎?我對尾部斜線的處理是否正確?我使用ErrorDocument的正確方法來做到這一點嗎?

這是我第一次嘗試使用.htaccess和mod_rewrite。這也是我的第一個Stackoverflow問題。

謝謝!

回答

0

我解決我的問題通過創建一個包含404.php文件:

<? header('location: /subdirectory'); ?> // redirect to a valid subdirectory/file 

和改變我的ErrorDocument進入:

ErrorDocument 404 /subdirectory/404.php 

顯然,這個問題是使用相對鏈接。上述解決方案允許我保留我原來的相對鏈接。

我希望這可以幫助別人。