【问题标题】:Wordpress network .htaccess issueWordpress 网络 .htaccess 问题
【发布时间】:2011-11-10 23:04:15
【问题描述】:

我有一个 Wordpress 网络设置,但目前只有一个带有 url 的子站点

/心理学

将来会有更多的网站与

/md /兽医

不过暂时只会有/psychology

我想做的是在我的 htaccess 中有一个重写规则,当用户访问站点的根目录 (/) 时,它实际上会加载 /psychology 站点。

我尝试在我的 htaccess 中添加这样的一行

RewriteRule (.*) 心理学/$1 [R,L]

但它破坏了网站。这是我当前的 htaccess(基本上是网络安装的 wordpress 默认值)

 # BEGIN WordPress
 <IfModule mod_rewrite.c>
 Options +FollowSymlinks
 RewriteEngine On
 RewriteBase /ASKanALLY/
 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]
 </IfModule>

# END WordPress

有什么想法吗?

【问题讨论】:

    标签: wordpress .htaccess


    【解决方案1】:

    您需要将基础添加到 RewriteRule 目标。并添加一个条件,以免出现重定向循环。

    RewriteRule ^ - [L] 之后添加这两行应该可以:

    RewriteCond %{REQUEST_URI} !^/ASKanALLY/psychology  ## Not already viewing a psychology URL
    RewriteRule ^(.*)$ /ASKanALLY/psychology/$1 [R,L]  ## Redirect to psychology
    

    这是完整的例子:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /ASKanALLY/
    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]
    
    RewriteCond %{REQUEST_URI} !^/ASKanALLY/psychology  ## Not already viewing a psychology URL
    RewriteRule ^(.*)$ /ASKanALLY/psychology/$1 [R,L]  ## Redirect to psychology
    
    RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
    RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
    RewriteRule . index.php [L]
    </IfModule>
    

    【讨论】:

    • 这太接近了!重定向有效,但我的样式表或图像都不起作用。当我将它们的网址粘贴到我的网络浏览器中时,它会在重定向循环中显示它。 localhost/ASKanALLY/psychology/wp-content/themes/twentyeleven/…
    • 新指令应在检查文件/目录是否存在(-f-d 标志)之后放置。我已经用完整的例子更新了答案。
    • Nathan 这真的很接近我在尝试使用您的 .htaccess 代码时收到 500 错误。
    • 我使用 RewriteCond %{REQUEST_URI} !^/ASKanALLY/psychology RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$ RewriteCond %{REQUEST_FILENAME} !^(.+ )\.jpg$ RewriteCond %{REQUEST_FILENAME} !^(.+)\.gif$ RewriteCond %{REQUEST_FILENAME} !^(.+)\.png$ RewriteRule ^(.*)$ /ASKanALLY/psychology/$1 [R ,L]
    【解决方案2】:

    您的RewriteRule 无效,因为它匹配所有网址,包括与/psychology/foo 匹配的网址。我猜你在/psychology 下没有.htaccess 文件?

    试试这个 - 它只会重写根目录。

    RewriteRule ^/$ psychology/ [r=301,L]

    【讨论】:

    • 我在 localhost 上运行它,所以我的博客的根是 localhost/ASKanALLY 我尝试在 RewriteBase /ASKanALLY/ 之后将该规则放在我的 htaccess 顶部,但它没有做任何事情.. .
    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多