Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Regex 重写上移目录_Regex_Apache_.htaccess_Mod Rewrite_Rewrite - Fatal编程技术网

Regex 重写上移目录

Regex 重写上移目录,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我有一个重写规则,如果您键入: www.whater.com/profile-one.php 这是您看到的url,但实际的模板页面是: www.whater.com/profile.php 以下是htaccess中的行: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ RewriteRule (.*

我有一个重写规则,如果您键入:

www.whater.com/profile-one.php

这是您看到的url,但实际的模板页面是:

www.whater.com/profile.php

以下是htaccess中的行:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)([^/])$ http://www.whatever.com/$1$2/ [R=301,L]
RewriteRule profile-(.*)\.php$ profile.php?name=$1
我的问题是,如果您访问以下url:

www.whater.com/second/profile-one.php


尽管profile.php模板不存在于第二个目录中,但它仍会尝试返回profile页面。请告诉我,防止这种情况发生的最好方法是什么?

这是由于这里的正则表达式错误造成的。您需要在第二条规则中使用开始锚定:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)([^/])$ http://www.whatever.com/$1$2/ [R=301,L]

RewriteRule ^profile-(.*)\.php$ profile.php?name=$1 [L,QSA]

再次感谢你,阿努巴瓦!