我对规则有一些理解问题。它应该工作,但我想我错过了什么。帮助是Appriciated:)
规则:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_URI}$1 ^(.*?/)(.*)\2$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule %{ENV:BASE}^(.+)/(\w+?)/(\w+?)$ %{ENV:BASE}handler.php?path=$1&class=$2&method=$3 [L,QSA]
</IfModule>
将此网址转换为:
http://sccatdev.office.dig/deploy/ajax/Approval/Article/test
要 http://sccatdev.office.dig/deploy/ajax/handler.php?path=Approval&class=Artile&method=test以及帖子和获取。
但它似乎缺少某些东西。 .htaccess位于ajax文件夹中。
答案 0 :(得分:0)
几乎没有问题:
%{ENV:BASE}
不能用于重写模式RewriteRule
模式匹配相对于当前目录的URI,而不是完整路径匹配。如果.htaccess
位于ajax
文件夹中,那么您甚至不需要%{ENV:BASE}
变量来重写。只需使用以下.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ handler.php?path=$1&class=$2&method=$3 [L,QSA]