Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Php .htaccess mod_rewrite检查querystring变量是否可用_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php .htaccess mod_rewrite检查querystring变量是否可用

Php .htaccess mod_rewrite检查querystring变量是否可用,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,基本上,我想重写我的URL,使其成为website.com/folder/,尽管有时我也需要重写website.com/folder/page/ 目前我只使用website.com/folder/,但无法让它检查是否有页面,如果我在文件夹one下创建另一个规则,它会读取该规则,并给我一个空页面var,这会破坏我的php。我正在与htaccess抗争,如有任何帮助,将不胜感激 这里是我的作品,只与文件夹,但我不能包括一个页面 Options +FollowSymLinks RewriteEngin

基本上,我想重写我的URL,使其成为
website.com/folder/
,尽管有时我也需要重写
website.com/folder/page/

目前我只使用
website.com/folder/
,但无法让它检查是否有页面,如果我在文件夹one下创建另一个规则,它会读取该规则,并给我一个空页面var,这会破坏我的php。我正在与htaccess抗争,如有任何帮助,将不胜感激

这里是我的作品,只与文件夹,但我不能包括一个页面

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|docs)/
RewriteRule ^([^/]*)/$ /?folder=$1 [QSA]
下面是我试图让它工作,无论是一个文件夹,或文件夹和页面

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)/$ /?folder=$1&page=$2 [L,QSA]
请帮忙

因此,您应该颠倒规则集中的规则顺序。因为在您的配置中,两个规则具有相同的重写条件,最具体的规则(文件夹+页面)应该位于顶部,最一般的规则应该是最后一个。如果第一条规则匹配时不匹配,则会重写URL,而第二条规则从不匹配。另外,您可能希望删除文件夹+页面规则模式中的尾随正斜杠(假设模式中的第二个组与页面而不是文件夹匹配)。所以我认为整个事情应该是这样的:

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)$ /?folder=$1&page=$2 [L,QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [L, QSA]
因此,您应该颠倒规则集中的规则顺序。因为在您的配置中,两个规则具有相同的重写条件,最具体的规则(文件夹+页面)应该位于顶部,最一般的规则应该是最后一个。如果第一条规则匹配时不匹配,则会重写URL,而第二条规则从不匹配。另外,您可能希望删除文件夹+页面规则模式中的尾随正斜杠(假设模式中的第二个组与页面而不是文件夹匹配)。所以我认为整个事情应该是这样的:

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)$ /?folder=$1&page=$2 [L,QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [L, QSA]

很难理解。尝试显示完整的传入URI,以查看您试图在规则中引用的查询的位置和方式。尽管很难理解。尝试显示完整的传入URI,以查看您试图在规则中引用的查询的位置和方式。@user1911854我已更新了答案。我希望它现在对你有用。@user1911854我已经更新了我的答案。我希望它现在对你有用。