我有一个网站,我需要为SEO原因显示一个网址,但实际的目标网页是一个略有不同的网址。我原本以为要求是to show the url which actually exists,但我不对。
所需网址:www.somesite.com/people/johndoe/?id = 10
实际存在的网址:www.somesite.com/people/?id = 10
我在我的.htaccess文件中尝试此操作,但无济于事:
RewriteRule ^/person/.+$ /person/$1 [R=301.L]
这似乎没有改变任何东西,我被告知我的网址不存在。 我在这个网站和其他地方查找了许多类似的问题,但找不到有效的解决方案。提前致谢
编辑(现有.htaccess):
# php_flag magic_quotes_gpc Off
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
#AuthName "username"
#AuthName "username"
#AuthUserFile "/home/something/.htpasswds/public_html/passwd"
#require valid-user
AuthName "username"
AuthUserFile "/home/something/.htpasswds/public_html/passwd"
RewriteCond %{HTTP_HOST} ^sitename.org$
RewriteRule ^(.*)$ "http\:\/\/www\.sitename\.org\/$1" [R=301,L]
答案 0 :(得分:0)
使用mod_rewrite
标志执行内部重写时使用R
规则:
在root .htaccess中使用此代码:
RewriteEngine On
RewriteRule ^(people)/.+$ /$1 [L,NC]
答案 1 :(得分:0)
您的重写条件不能包含前导/。它被剥离了。使用
RewriteRule ^person/.+$ /person/$1 [R=301,L]
另请注意,您在旗帜中有句号,而不是逗号。
失去&#34;和最后的重写规则:
RewriteRule ^(.*)$ http://www.sitename.org/$1 [R=301,L]
我不知道你是否会因为多个301在行动中遇到任何麻烦。它可能取决于服务器配置。您是否需要修改后的URI才能返回访问者并在浏览器中看到?如果没有,则在该重写规则上丢失301。
通过评论记录您正在做的事情和原因。例如,你的最后两行是强制www.sitename.org而不是sitename.org。