2015-12-14 44 views
1

我創建以下.htaccess文件,我想知道是否可以改進:如何改進這個.htaccess文件?

RewriteEngine On 

RewriteRule ^site$ ./site/ [L,NC] 
RewriteRule ^site/(.*)$ ./main/$1 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !/en [NC] 
RewriteRule ^(.*)$ ./404.php?url=$1 [L,NC] 

我想重定向其輸入www.domain.com/site/到www.domain.com/main/遊客和所有其他請求www.domain.com/404.php?url = ...這有效,除非用戶沒有輸入斜線(www.domain.com/site)。

回答

0

你應該可以做到這一點與/?像

RewriteEngine On 

RewriteRule ^site$ ./site/? [L,NC] 
RewriteRule ^site/(.*)$ ./main/$1 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !/en [NC] 
RewriteRule ^(.*)$ ./404.php?url=$1 [L,NC] 
0

對於第一條規則,你重寫sitesite/,然後重寫site/main/。我寧願一步完成,例如

RewriteRule ^site/?$ ./main/ [L,NC] 

第二條規則將保持原樣。


根據目前的規則,您只能將不存在的路徑重定向到404.php。如果這是你想要的,一切都很好。如果沒有,你應該刪除!-f!-d條件和添加條件被改寫爲404

RewriteCond %{REQUEST_URI} !/main/ [NC] 

即使替代./404.php是有效的,我將它寫成

RewriteRule ^(.*)$ 404.php?url=$1 [L,NC] 
排除 main