Php 未应用restfull htaccess重写条件
我对规则的理解有点问题。这应该行得通,但我想我错过了什么。感谢您的帮助:) 规则:Php 未应用restfull htaccess重写条件,php,ajax,apache,.htaccess,mod-rewrite,Php,Ajax,Apache,.htaccess,Mod Rewrite,我对规则的理解有点问题。这应该行得通,但我想我错过了什么。感谢您的帮助:) 规则: <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_URI}$1 ^(.*?/)(.*)\2$ RewriteRule ^(.*)$ - [E=BASE:%1] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule
<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>
选项-多视图
重新启动发动机
重写条件%{REQUEST_URI}$1^(.*?/)(.*)\2$
重写规则^(.*)-[E=基:%1]
重写cond%{REQUEST_FILENAME}-F
重写规则%{ENV:BASE}^(+.+)/(\w+?)/(\w+?)$%{ENV:BASE}handler.php?路径=$1,类=$2,方法=$3[L,QSA]
它应该转换此url:
到
一起发布和获取
但我似乎错过了什么。htaccess位于ajax文件夹中 有几个问题:
%{ENV:BASE}
作为一个ENV变量不能在重写模式中使用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]
非常感谢你的指点。但你的规则不会被触发。它位于ajax文件夹中。通过在
.htaccess
上放置一些垃圾(随机)文本,验证是否启用了.htaccess
,并查看在浏览器中访问页面时是否生成500(内部服务器)错误。500错误表示。htaccess已启用。是,已启用。我现在正在寻找解决办法。