Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Apache mod_rewrite将php参数添加到基本url_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Apache mod_rewrite将php参数添加到基本url

Apache mod_rewrite将php参数添加到基本url,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我确信这个问题以前已经得到了回答,但我不确定如何搜索答案,因为谷歌搜索充斥着通用的mod_重写url样式问题 我有一个带有以下标准规则的.htaccess文件,用于将非www查询重定向到www RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] 该站点被构造为具有两个主页的单页应用程序,并且该站点根据url参数显示html。假设第一页是苹果

我确信这个问题以前已经得到了回答,但我不确定如何搜索答案,因为谷歌搜索充斥着通用的mod_重写url样式问题

我有一个带有以下标准规则的.htaccess文件,用于将非www查询重定向到www

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301]
该站点被构造为具有两个主页的单页应用程序,并且该站点根据url参数显示html。假设第一页是苹果,第二页是梨。我想这样做,如果用户搜索website.com,那么第一条规则将被调用,它将重定向到www.website.com。然后我希望它添加一个参数,使其成为www.website.com/?p=apples,因为原始搜索中既不包含?p=apples,也不包含?p=pears

我尝试了几种解决方案,但它们似乎都会导致重定向循环。这会意外导致重定向循环,例如:

RewriteCond %{THE_REQUEST} !^.*\?p=apples.*$
RewriteCond %{THE_REQUEST} !^.*\?p=pears.*$
RewriteRule .* http://www.website.com/?p=apples [R] # also how can this be generalized so it's not domain name specific

看看这是不是你要找的。如果您试图将其合并,使其重定向到www,并且如果查询字符串为空,则重定向到
?p=apples
,则此代码适用于您

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{QUERY_STRING} !p=(.+)$ [NC]
RewriteRule ^$ http://www.%{HTTP_HOST}/?p=apples [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L,QSA]

将缓存添加到.htaccess后是否清除了缓存?您在其他目录中有.htaccess吗?