Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
htaccess规则以删除.php并进行另一次重写_Php_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

htaccess规则以删除.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

因此,我有一条规则,删除了在我的管理页面“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} !-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]似乎可以停止规则。你能解释一下第一行末尾的[或]吗?再次感谢阿努巴瓦!:)
只是表示替换,所以它意味着如果请求是一个文件或目录,则不要使用下面的任何规则。