子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)

Posted

技术标签:

【中文标题】子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)【英文标题】:Subdomain "m." with Wordpress and. htaccess (Conflict in the rewrite rules in the htaccess.) 【发布时间】:2014-04-28 23:29:02 【问题描述】:

我平时没有发帖的习惯,因为我总是通过搜索论坛找到答案,但是今天我遇到了一个真正的问题!

我在我的域的子目录中有一个 Wordpress 安装多站点。也就是说,在http://mondomaine.com/fr/

我希望在子域“m”中制作移动版本。我希望我的移动版本可以通过 http://m.mondomaine.com/fr/ 获得。

我的主机创建了指向站点根目录的子域 m。

当我想从我的移动子域访问页面时,必须将其重定向到主页 /fr/。

我试图更改我的 .htaccess ,但无济于事,或者我有重定向循环,或者我有一个 404 页面。

我认为规则之间存在冲突,但我确实尝试并测试了很多解决方案,但没有发现任何结论。

Wordpress 生成的原始 htaccess,位于目录 /fr 中:

RewriteEngine On

RewriteBase /fr/
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %REQUEST_FILENAME -f [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

我修改的.htaccess:

RewriteEngine On

RewriteBase /fr/
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %REQUEST_FILENAME -f [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteCond %HTTP_HOST !^m\.(.*) [NC]
RewriteRule . index.php [L]

RewriteCond %HTTP_HOST ^m\.(.*) [NC]
RewriteRule ^(.*)$ http://mondomaine.com/fr/$1 [L,P]

提前感谢那些回复的人

【问题讨论】:

您是否启用了mod_proxy 是的,mod_proxy 已启用。 【参考方案1】:

如果启用了mod_proxy,则将最后一个m. 规则移到顶部,就在RewriteEngine On 的下方,如下所示:

RewriteEngine On

RewriteCond %HTTP_HOST ^m\.(.+)$ [NC]
RewriteRule ^(.*)$ http://mondomaine.com/fr/$1 [L,P]

【讨论】:

谢谢你的回复,但是我去手机版的时候显示找不到页面。 “未找到请求的 URL /fr/ 在此服务器上未找到。” 只是为了测试将P更改为R,看看会发生什么。 有一个重定向到没有子域m的同一页面。 好的,带回 P 并检查 error.log 中的 404 并告诉我您收到的确切错误消息。 您好,最后我的主机没有启用 mod_proxy。现在它已启用,我有一个“500 内部服务器错误”。我总是希望主机出现错误日志。

以上是关于子域“m”。与 WordPress 和。 htaccess(在 htaccess 中的重写规则冲突。)的主要内容,如果未能解决你的问题,请参考以下文章

将 LEMP Wordpress 站点手动迁移到子域以进行测试/开发

如何将我的 wordpress 博客集成到我的子域中?

如何更快地将 WordPress 网站从子域移动到主域

将弹性豆茎(wordpress 博客)映射到子域

使用 WordPress 多站点创建子域时自动更新 Windows 8 主机文件

根目录中的 Wordpress htaccess 覆盖子域中的 htaccess。子域应用程序现在无法运行