【问题标题】:How to configure permalinks (.htaccess) for Wordpress in subdirectory如何在子目录中为 Wordpress 配置永久链接 (.htaccess)
【发布时间】:2014-05-20 00:52:29
【问题描述】:

问题:我无法使用 Wordpress 创建友好的永久链接。

我们正在运行 Apache。我正在尝试修改 .htaccess,但没有成功。

这是我的 .htaccess 文件的原始内容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

我找到了一个有类似问题的人,但对他来说,/blog 位于嵌套子目录中。见this post

这是他的解决方案:

<VirtualHost *:80>
    DocumentRoot /home/user/
    ServerName mydomain.com
    ServerAlias www.mydomain.com

    <Directory "/home/user">
      Options FollowSymLinks
      AllowOverride none
      Order allow,deny
      Allow from all
    </Directory>

    <Directory "/home/user/blog">
      RewriteEngine On
      RewriteBase /blog/
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . index.php [L]

      Options FollowSymLinks
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

我认为我的答案在他的解决方案中,但我不知道如何针对我的特殊情况修改这个 sn-p。我的 Wordpress 位于 domain.com/blog 目录中。

【问题讨论】:

  • 在使用Mod-Rewrite(.htaccess)之前,您需要使用/设置AllowOverride All

标签: wordpress apache .htaccess mod-rewrite


【解决方案1】:

您必须告诉主机,允许其他文件(如.htaccess)覆盖规则。

虚拟主机

<VirtualHost *:80>
    DocumentRoot /home/user/
    ServerName mydomain.com
    ServerAlias www.mydomain.com

    <Directory "/home/user">
      Options FollowSymLinks
      AllowOverride none
      Order allow,deny
      Allow from all
    </Directory>

    <Directory "/home/user/blog">
      Options FollowSymLinks
      ## ADD THESE!
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

否则,您可以删除您的完整博客指令 (&lt;Directory "/home/user/blog"&gt;) 并将 AllowOverride none 设置为 AllowOverride All

<VirtualHost *:80>
    DocumentRoot /home/user/
    ServerName mydomain.com
    ServerAlias www.mydomain.com

    <Directory "/home/user">
      Options FollowSymLinks
      # Change this!
      AllowOverride All
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

您可以在.htaccess (/home/user/blog/.htaccess) 上进行重写:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /blog/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]
</IfModule>

这里是我网站上的一个小例子:

<VirtualHost *:80>
    ServerAdmin support@adi-code.de
    ServerName adi-code.de
    ServerAlias adi-code.de www.adi-code.de *.adi-code.de
    DocumentRoot /opt/adi

    <Directory /opt/adi/>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/adicode_error.log
    LogLevel warn
    CustomLog /var/log/apache2/adicode_access.log combined
</VirtualHost>

【讨论】:

  • 您好。我的部分问题是知道要为 DocumentRoot 和 放置什么,对于我的情况,即 domain.com/blog ...您知道我将如何为此修改虚拟主机文件吗?
  • 为什么?您不需要更改虚拟主机。您的主站点位于 /home/user/ (www.example.com) 上,博客位于子目录 /home/user/blog (www.example.com/blog) 上。 编辑删除"
  • 谢谢。我会尽可能给你打勾。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多