簡體   English   中英

如何為php文件編寫mod_rewrite規則

[英]how to write mod_rewrite rules just for php files

我正在嘗試為我的網站目錄編寫規則。

我試過這樣的事情:

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-我想將每個其他網址重寫為index.php?url=$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]

你的模式的這一部分:/( /([a-zA-Z0-9\\/\\.])$ a- /([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]

如何使用RewriteCond

你可以這樣做:

RewriteEngine On

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

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

這樣你就可以對cssfontimgjs目錄中的文件進行noop重寫,並對所有其他URL進行index.php重寫。

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]時不要重定向到其他頁面:

如果您訪問localhost / page.php,請不要重定向到target_file.php?url = / page.php

但繼續使用相同的URL並顯示文件target_file.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM