我可能错过了一些非常简单的事情。我在mod_rewrite上经历了大约4 ^ 27个帖子。但仍然无法使其正常运作。
我有两个指向同一DNS条目的URL。我有标准的.htaccess用于将停放的域重定向到我的主域上的子文件夹。但当我走下两个级别时,我遇到了问题。这是我的情况:我有MAIN域名和PARKED域名。我希望PARKED域的每个请求都以MAIN / PARKED结束,但仍然向用户显示为PARKED。因此,当用户输入PARKED /页面时,即使文件位于MAIN / PARKED /页面中,也应该出现在浏览器的地址栏中。我还希望浏览器显示的URL更改为PARKED /子文件夹/页面,即使用户手动输入MAIN / PARKED /子文件夹/页面也是如此。这是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 /子文件夹/页面或MAIN / PARKED。然后我收到404.如果你输入PARKED /子文件夹/页面,它表现得很完美。
任何智慧之词的TIA。迈克尔
答案 0 :(得分: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