.htaccess映射www&;非www到文件夹并维护www


.htaccess mapping www & non-www to folder and maintain www

我不是.htaccess专家,很少使用它。我在Net和SO上尝试了几个解决方案,但仍然没有成功。所以我有一个IP说1.2.3.4,它在/var/www/html/中有我的wordpress应用程序的子文件夹说ABC。DNS已经被设置为使得www.mydomain.commydomain.com指向IP 1.2.3.4

我的内容在.htaccess文件中,如下所示,它只支持mydomain.com。除了当我放置www.mydomain.com时,内容显示为Linux主页之外,其他内容都按预期显示。

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^mydomain'.com$
RewriteCond %{REQUEST_URI} !^/ABC/
RewriteRule (.*) /ABC/$1

当我放入www.mydomain.com时,浏览器会自动将URL更改为mydomain.com

除此之外,我还想拥有www的所有域。来自mydomain.com的Means请求将显示为www.mydomain.com。稍后我将把www.mydomain.com放在wordpress的URL配置中。感谢您的帮助。

切换回旧的.htaccess代码。在你上次更新后,我更清楚了。您在"public_html/ABC"中有wordpress文件,但需要您的网站url为www.example.com。让我逐步解释。

  1. 将旧代码粘贴到.htaccess中
  2. 将index.php和.htaccess文件从/ABC文件夹复制(不要移动)到站点的"public_html"中
  3. 在"public_html/index.php"中找到一条规则为"require(dirname(FILE).'/wp-blog-header.php');",并将其替换为"require(dirname)(FILE
  4. 仅将常规设置(设置->常规)中的"网站地址(URL)"更改为"http://www.example.com"

所以我终于得到了我想要使用的以下解决方案。希望这能帮助到一些人:

RewriteEngine on
RewriteBase /
# Whatever request coming to the server, add www to it
RewriteCond %{HTTP_HOST} !^www'.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# Map the www URL to the subfolder in root directory    
RewriteCond %{HTTP_HOST} www'.myurl'.com$
RewriteCond %{REQUEST_URI} !^/thefolder/
RewriteRule (.*) /thefolder/$1

对于Wordpress部分,我在wp-config.php中放入了如下代码:

define('WP_HOME','http://www.myurl.com');
define('WP_SITEURL','http://www.myurl.com');

谢谢。干杯

更新我刚刚意识到,在上面的更改之后,我无法登录到我的WP管理页面。这是由于错误的重定向。它看起来有点像http://www.myurl.com/wp-login.php?redirect_to=http%3A%2F%2Fwww.myurl.com%2Fthefolder%2Fwp-admin%2F&reauth=1

当我从URL中删除thefolder时,它会重定向到期望的页面。有人能对此提出建议吗?