htaccess规则以删除.php并进行另一次重写
因此,我有一条规则,删除了在我的管理页面“admin.php”之后使用.php的必要性:htaccess规则以删除.php并进行另一次重写,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,因此,我有一条规则,删除了在我的管理页面“admin.php”之后使用.php的必要性: # Don't require .php extension to load php page RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ /$1.php [L] 规则运行良好,直到我需要添加以下规则 RewriteCond %{REQUEST_FILENAME
# Don't require .php extension to load php page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /$1.php [L]
规则运行良好,直到我需要添加以下规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B]
以及,影响第一条规则的规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/?$ /?action=viewHomepageName&page_identifier=$1 [L,QSA,B]
我想知道我是如何制作CMS及其查询字符串的,这是不可能纠正的。可以从admin.php重定向到admin/但是如果可能的话,我希望第一条规则的可用性能够继续下去
干杯!
亚当像这样组织你的规则
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
RewriteRule ^([^/]+)/([^/]+)/?$ /?action=viewCategoryName&categoryName=$1&page_identifier=$2 [L,QSA,B]
RewriteRule ^([^/]+)/?$ /?action=viewHomepageName&page_identifier=$1 [L,QSA,B]
很好用!你能解释一下为什么这样做吗?这与css级联的方式类似吗?这些规则是自上而下应用的。因此,最具体的规则应该放在顶部,最通用的规则,如
^([^/]+)/?$
最后需要出现。非常感谢,阅读[L]似乎可以停止规则。你能解释一下第一行末尾的[或]吗?再次感谢阿努巴瓦!:)或
只是表示替换,所以它意味着如果请求是一个文件或目录,则不要使用下面的任何规则。