0

我可能错过了一些非常简单的东西。我在 mod_rewrite 上浏览了大约 4^27 个帖子。但仍然无法使其正常工作。

我有两个指向同一个 DNS 条目的 URL。我有标准的 .htaccess 用于将停放的域重定向到我的主域上的子文件夹。但是当我下降两个级别时,我遇到了问题。这是我的情况:我有 MAIN 域和 PARKED 域。我希望对 PARKED 域的每个请求都以 MAIN/PARKED 结尾,但在用户看来仍然是 PARKED。因此,当用户进入 PARKED/page 时,即使文件位于 MAIN/PARKED/page 中,浏览器地址栏中也应该出现该内容。即使用户手动输入 MAIN/PARKED/subfolder/page,我也希望浏览器显示的 URL 更改为 PARKED/subfolder/page。这是 MAIN 中的 .htaccess:

RewriteEngine On
Options +FollowSymLinks
RewriteBase /

# Display PARKED domain to user for all pages in MAIN/PARKED directory
RewriteCond %{HTTP_HOST} ^(www\.)?PARKED\.?(:[0-9]+)?$ [NC]
RewriteCond $1 !^PARKED/
RewriteRule ^(.*)$ PARKED/$1 [L]

# BEGIN WordPress
#RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

更复杂的是,我的 Wordpress 网站位于 MAIN/PARKED。我没有更改Wordpress 中的任何规则,因为我希望 .htaccess 来处理这一切。

上面的 .htaccess 似乎在所有情况下都能正常工作,除非用户手动输入我上面的 2-deep 示例:MAIN/PARKED/subfolder/page 或只是 MAIN/PARKED。然后我收到一个 404。如果您输入 PARKED/subfolder/page,它的行为很完美。

TIA 对于任何智慧之言。

迈克尔

4

1 回答 1

1
# BEGIN WordPress
<IfModule mod_rewrite.c>
# tell mod_rewrite to activate and give base for relative paths

RewriteEngine on

RewriteBase /

RewriteCond %{HTTP_HOST} ^(www.)?PARKED.com$
RewriteCond %{REQUEST_URI} !^/PARKED/ 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /PARKED/$1 

RewriteCond %{HTTP_HOST} ^(www.)?PARKED.com$
RewriteRule ^(/)?$ PARKED/index.php [L]

# for main domain

RewriteRule ^index\.php$ - [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 . index.php [L]

</IfModule>

# END WordPress
于 2014-03-18T07:20:46.160 回答