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
.htaccess htaccessdomain.com访问www.domain.com是可行的,但它会丢失与搜索引擎优化相关的其他规则_.htaccess_Seo_Dns_Rewrite - Fatal编程技术网

.htaccess htaccessdomain.com访问www.domain.com是可行的,但它会丢失与搜索引擎优化相关的其他规则

.htaccess htaccessdomain.com访问www.domain.com是可行的,但它会丢失与搜索引擎优化相关的其他规则,.htaccess,seo,dns,rewrite,.htaccess,Seo,Dns,Rewrite,编辑:已修复 好吧,在这个网站和谷歌上徘徊了几个小时后,我发现了问题: 错误代码: RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 好代

编辑:已修复


好吧,在这个网站和谷歌上徘徊了几个小时后,我发现了问题:

错误代码:

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
好代码:

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com%{REQUEST_URI} [L,R=301]    
请求URI似乎不像$1那样工作。。。因此,我正在努力学习改写mod_


问题是:

条件:

  • SEO URL的基本重写规则

  • 域从domain.com重定向到www.domain.com

问题:

非www.domain.com页面将丢失其SEO URL并返回到原始php变量:

搜索引擎优化url:www.domain.com/Video+1234

非www网址:domain.com/Video+1234

结果(浏览器地址栏):

www.domain.com/index.php?video=1234

期望的:

www.domain.com/Video+1234

如何使服务器保留旧表单

.htaccess代码段:

RewriteEngine On
# RewriteBase /



RewriteRule ^Video\-(.+)\+([0-9]+)$ index.php?video=$2


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

你的规则是这样的:

RewriteEngine On
Options +FollowSymlinks -MultiViews

RewriteRule ^Video\+([0-9]+)$ http://www.domain.com/index.php?video=$2 [L,NC]

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

第一条规则中的
L
将在应用该规则后使其停止。如果不起作用,请告诉我。

您的规则如下:

RewriteEngine On
Options +FollowSymlinks -MultiViews

RewriteRule ^Video\+([0-9]+)$ http://www.domain.com/index.php?video=$2 [L,NC]

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

第一条规则中的
L
将在应用该规则后使其停止。如果它不起作用,请告诉我。

好吧,在这个网站和谷歌上徘徊了几个小时后,我发现了问题:

错误代码:

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
好台词:

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com%{REQUEST_URI} [L,R=301]    

请求URI似乎不像$1那样工作。。。因此,我正在努力学习改写mod_

好吧,在这个网站和谷歌上徘徊了几个小时后,我发现了问题:

错误代码:

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
好台词:

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com%{REQUEST_URI} [L,R=301]    

请求URI似乎不像$1那样工作。。。因此,我正在努力学习改写mod_

@anubhava我对多个php文件有多个规则。我只是举个例子。重写规则中的完整URL无法解决测试中的问题。实际上,它使像“/Video+1234”类型的URL这样的普通WWW URL变成了“/index.php?Video=1234”。。。。因此,使用您提到的配置:www.domain.com/Video+1234变为www.domain.com/index.php?Video=1234-这与我想要的正好相反:DYou也可以将该答案作为示例,并将相同的概念应用于所有重定向规则。只要您正在执行内部重定向no
[R]
,并且有
[L]
标记,它将只处理该规则,不应弄乱任何其他内容。我在您的问题中指出,您在重写规则中有
^Video\(.+)\+([0-9]+)$
,但尝试匹配文本
Video+1234
,这将失败。因此,我将您的正则表达式更改为
^Video\+([0-9]+)$
,因此刚刚编辑了上面的答案,请重试。@anubhava通过更改正则表达式,php脚本没有注册变量,所以我甚至没有检查非www url。我制作的
www.domain.com/Video+1234
就是一个例子,但我的URL实际上更长,就像
www.domain.com/Video不是另一个lolcat+1234
。结果:没有php变量注册(以及根据
[L,NC]
标志的存在而产生的不同php错误)@anubhava好的,我也测试了主要问题(我的问题),除了没有注册变量之外,它仍然会生成php变量URLthemselves@anubhava我有多个php文件的多个规则。我只是举个例子。重写规则中的完整URL无法解决测试中的问题。实际上,它使像“/Video+1234”类型的URL这样的普通WWW URL变成了“/index.php?Video=1234”。。。。因此,使用您提到的配置:www.domain.com/Video+1234变为www.domain.com/index.php?Video=1234-这与我想要的正好相反:DYou也可以将该答案作为示例,并将相同的概念应用于所有重定向规则。只要您正在执行内部重定向no
[R]
,并且有
[L]
标记,它将只处理该规则,不应弄乱任何其他内容。我在您的问题中指出,您在重写规则中有
^Video\(.+)\+([0-9]+)$
,但尝试匹配文本
Video+1234
,这将失败。因此,我将您的正则表达式更改为
^Video\+([0-9]+)$
,因此刚刚编辑了上面的答案,请重试。@anubhava通过更改正则表达式,php脚本没有注册变量,所以我甚至没有检查非www url。我制作的
www.domain.com/Video+1234
就是一个例子,但我的URL实际上更长,就像
www.domain.com/Video不是另一个lolcat+1234
。结果:没有php变量注册(以及根据
[L,NC]
标志的存在而产生的不同php错误)@anubhava好的,我也测试了主要问题(我的问题),它仍然会生成php变量URL,除了没有注册变量本身