2013-11-20 40 views
1

我正在嘗試爲我的網站的目錄編寫規則。如何編寫僅用於php文件的mod_rewrite規則

我想是這樣的:

RewriteEngine on 

RewriteRule ^(css|font|img|js)/([a-zA-Z0-9\/\.])$ $1/$2 [L] 

RewriteRule ^([a-zA-Z0-9\/\_]*)$ index.php?url=$1 [L] 

但我無法理解爲什麼它都不盡如人意。

1 - 我希望用戶擁有這些目錄的css|font|img|js直接訪問 (只是文件,而不是目錄列表。重寫目錄列表403.php

2 - 我希望用戶在查看目錄直接訪問*.js|*.css文件。 (而不是其他文件。重寫另403.php

3-我想每一個其他的URL改寫爲index.php?url=$1

在此先感謝。

回答

1

您模式的這一部分:/([a-zA-Z0-9\/\.])$意味着一個斜線,跟一個字符一個字母,數字或斜線點,然後結束。我猜你想要類似的東西:

ErrorDocument 403 /403.php 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(css|font|img|js)/ - [L,F] 

RewriteCond %{REQUEST_URI} !\.(js|css)$ 
RewriteRule ^view/ - [L,F] 

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

您可以嘗試以下規則:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule !^(css|font|img|js)/ /403.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_URI} \.(css|js)$ [NC] 
RewriteRule !^view/ /403.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ index.php?url=$1 [L,QSA] 
1

如何使用RewriteCond

你可以這樣做:

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^/(css|font|img|js)/ 
RewriteRule .* - [L] 

RewriteRule ^([a-zA-Z0-9\/\_]*)$ index.php?url=$1 [L] 

這樣,你做一個空操作改寫爲CSS字體IMGJS目錄內的文件,並做index.php重寫所有其他URL。

1
RewriteEngine on 

Options -Indexes 

RewriteCond %{REQUEST_URI} .php$ [OR] 
RewriteRule ^(.*)$ target_file.php?=url$1 [L,NC] 

#allow access to file js and css 
RewriteCond %{REQUEST_URI} .(css|js)$ 
RewriteRule ^(.*)$ - [L,NC] 

當使用[L,NC]沒有自動跳轉到其他頁面:

如果您訪問本地主機/ page.php文件這不重定向到target_file.php URL =/page.php文件

但在相同的網址繼續並出現文件target_file.php