我的子域的htaccess在wordpress中不起作用

时间:2014-07-14 08:30:18

标签: php wordpress apache .htaccess

我在域 www.techchef.co

上有子域名 imonline

我已经在cpanel中创建了指向此文件夹的子域。所以网址应为imonline.techchef.co

我已经尝试过wordpress提供.htacess为下面提到的子域名但是不起作用,我也尝试过其他一些配置,但它也不起作用。

请指导我.htacess文件中缺少的内容

My Current htacess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress

之前我写的是

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ http://imonline.techchef.co/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /imonline/index.php [L]
</IfModule>
# END WordPress

1 个答案:

答案 0 :(得分:2)

关于我们的小评论对话:

错误

你失去了我。

您的 .htaccess 存在很多问题。但我不怪你。我相信每个人在开始时都很难与mod_rewrite相处......即使在今天,我甚至有时会挣扎。 ;)

  1. 您有太多[L]个标记。你觉得他们怎么做? L 代表 last [L]终止路由例程。所有后续指令都将被忽略。

  2. 您不能使用RewriteCond %{HTTP_HOST} ^subdomain\.domain\.tld$后跟适当的RewriteRule

  3. 您之前的尝试会将每个请求重定向到子域,并且由于[L]标志而暂停到那里。

  4. 更糟糕的是,您在测试过程中使用了[R=301](移动永久)!!如果您的访问者同时访问过您的网站,他们对您网站的体验可能永远被打破!直到他们清理浏览器缓存。

  5. RewriteRule ^wp-admin$ wp-admin/ [R=301,L]应该将wp-admin目录中的所有内容重定向到wp-admin/index.php文件,这不一定是您想要的。 wp-admin/edit/article也会被转到wp-admin/

  6. 这总结了我所注意到的所有错误。现在让我们重新定位您的子域名...我还没有对此进行测试,因为我的机器目前尚未设置进行测试,因此您可能需要进行一些调试。实际上,您可能需要进行一些调试。

    解决方案 - 可能

    <IfModule mod_rewrite.c>
    RewriteRule On
    RewriteBase /
    
    # Redirect the subdomain to a directory.
    RewriteCond %{HTTP_HOST} ^imonline\.techchef\.co$ [NC] # NC = no case
    RewriteRule ^(.*)$ http://techchef.co/imonline/$1 [L]
    
    # Do not redirect actually existing files and directories. Optional?
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule . - [L]
    
    # Redirect everything to index.php, your last RewriteRule of your current .htaccess
    RewriteRule . index.php
    </IfModule>
    

    最后RewriteRule取决于您的CMS。我对WordPress没什么经验,所以我说不出来。您可以在线找到相应的信息。

    事实上,快速谷歌搜索会产生正确的.htaccess。针对不同方案here有多个模板。向下滚动一下,找到一个子域名。

    我希望你至少可以学到一些东西......:P