尝试在.htaccess
文件中设置301重定向,这就是我想要做的事情
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
RewriteRule (.*)$ http://www.mysite.com/wordpress/$1 [R=301,L]
我正在使用WAMPP服务器在本地计算机上对此进行测试。虽然我点击http://localhost/wordpress/
我正被重定向到http://www.mysite.com/wordpress/
但是对于其他网址我根本没有被重定向到。例如
我在我的本地计算机http://localhost/wordpress/2010/11/shadows/
中有此URL,而这位于服务器http://www.mysite.com/wordpress/2010/11/shadows/
,但是当我点击此URL时,我没有被重定向到实时服务器上受尊重的URL,但我正在显示来自本地机器的同一页面。
工作:
http://localhost/wordpress/
=> Redirected to:
http://www.mysite.com/wordpress/
无效
http://localhost/wordpress/2010/11/shadows/
=> Redirected to:
http://www.mysite.com/wordpress/2010/11/shadows/
从URL清楚,我正在尝试在Wordpress中执行此操作。
这是完整的.htaccess
文件
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress
RewriteEngine On
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
RewriteRule (.*)$ http://www.mysite.com/wordpress/$1 [R=301,L]
任何人都可以告诉我重定向条目有什么问题吗?提前致谢
更新 我甚至尝试过这个选项
Options +FollowSymLinks
RewriteEngine on
RewriteBase /wordpress/
RewriteRule ^(.*)$ http://www.mysite.com/wordpress/$1 [L,R=301]
没用。
答案 0 :(得分:0)
%{HTTP_HOST]
将包含localhost
或www.thecolorsofmysoul.com
之类的内容。所以你的条件永远不会匹配。
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
并且重定向到外部域永远不会触发。
同样,前两个规则在consort中将任何非文件/目录映射到index.php
。 http://localhost/wordpress/
的正则表达式匹配字符串为“”,因此会使“.
”模式失败,并且会失败,并会重定向到您的“更新”。尝试
Options +FollowSymLinks
RewriteEngine on
RewriteBase /wordpress/
RewriteCond %{HTTP_HOST} =localhost
RewriteRule ^.* http://www.thecolorsofmysoul.com/wordpress/$0 [L,R=301]
BTW这个基数应该在DOCROOT/.htaccess
。相应的Wordpress规则(不应高于此重定向)是
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!index\.php$) index.php [L]
您不需要在目标中重复基础,并且负前瞻断言消除了对第一个index.php规则的需要。
答案 1 :(得分:0)
永远是第一个,然后是其他人(谈论RewriteRules 仅,男人!:D)(你忘记了 所以这里是你的RewriteRule的“干净”版本: 如果它位于 顺便说一下,这是多年来第一次找到“正在建设中”的页面很好! 请告诉我它是否有效。QSA
指令)。< / p>
<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN My Own rewrite rules
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
RewriteRule (.*) http://www.mysite.com/wordpress/$1 [QSA,R=301,L]
# END My Own rewrite rules
# BEGIN WordPress
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
# END WordPress
</IfModule>
.htaccess
文件中,请尝试不使用此/
:<IfModule mod_rewrite.c>
RewriteEngine On
# BEGIN My Own rewrite rules
RewriteCond %{HTTP_HOST} ^http://localhost/wordpress/$ [OR]
RewriteCond %{HTTP_HOST} ^localhost/wordpress/$
# Without the / after wordpress:
RewriteRule (.*) http://www.mysite.com/wordpress$1 [QSA,R=301,L]
# END My Own rewrite rules
# BEGIN WordPress
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
# END WordPress
</IfModule>