在我的网站根目录中,我有以下内容重定向到非www域
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.notails\.com [NC]
RewriteRule ^(.*)$ http://notails.com/$1 [R=301,NC]
在一个名为'photography'的子文件夹中,我有这个......
RewriteEngine on
RewriteRule ^show/([^/\.]+)/([^/]+)$ show.php?section=$1&photoid=$2 [L]
摄影文件夹中的任何内容都会忽略www删除规则。如何将两个这两个规则应用于摄影文件夹中的文件夹/文件?
另外......我的root htaccess文件有这个......
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
它会干扰吗?我有一个自我托管的wordpress博客,但它不在网站的根目录,它位于一个名为“博客”的子文件夹中,所以我不知道为什么这个规则在我的root的htaccess文件中。可以/我应该移动吗?
编辑:只是指出,如果不是很明显 - 当涉及到htaccess和mod_rewrite时,我就是一个完整的菜鸟。子文件夹中的htaccess文件是否覆盖了比它更接近根的任何htaccess文件?或者htaccess内容是否合并?
编辑2 :我已尝试将第二条规则移至与www删除规则相同的htaccess文件,具体如下代码所示......
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.notails\.com [NC]
RewriteRule ^(.*)$ http://notails.com/$1 [R=301,NC]
RewriteRule ^photography/show/([^/\.]+)/([^/]+)$ photography/show.php?section=$1&photoid=$2 [L]
如果我转到我的一个摄影页面,它会解析为预定的网址(例如http://notails.com/photography/show/pointofayre/260),但页面是404.
如果我手动将'www'添加到撤消其他规则...(http://notails.com/show.php?section=pointofayre&photoid=260)并删除'摄影/'来自它。
答案 0 :(得分:3)
将RewriteOptions inherit
添加到“photography”文件夹中的.htaccess中,因为现在忽略来自父文件夹的所有重写规则(默认行为)。
或者将重写规则从该子文件夹.htaccess移动到根目录(您需要通过修复路径稍微修改您的规则 - 添加photography/
可能就足够了,取决于实际的“摄影”位置)
<强>更新强> 你的根.htaccess可以是这样的:
Options +FollowSymlinks
<IfModule mod_rewrite.c>
# activate rewrite engine
RewriteEngine On
# we are in the root
RewriteBase /
# no www please
RewriteCond %{HTTP_HOST} ^www\.notails\.com [NC]
RewriteRule ^(.*)$ http://notails.com/$1 [R=301,L,QSA]
# photography
RewriteRule ^photography/show/([^/\.]+)/([^/]+)$ /photography/show.php?section=$1&photoid=$2 [L]
# WordPress rules
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>