【问题标题】:.htaccess in subfolder doesn't work子文件夹中的 .htaccess 不起作用
【发布时间】:2013-12-30 18:54:03
【问题描述】:

我在 Godaddy 服务器上托管我的网站。 在服务器上,我有 5 个站点,每个站点位于单独的文件夹中。 例如:“webroot/site1” 我将特定域定向到服务器“/site1”上的特定文件夹

问题: 我试图在子文件夹中使用 .htaccess 创建一个 RewriteRule,但它一直告诉我 404 not found。

这是.htaccess:

RewriteEngine On

这很好用:

RewriteCond %{HTTP_HOST} ^example.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]

这个重定向到 404 页面:

#rewirite categories only
RewriteRule ^category/([0-9]+)/.*$ /category.php?c_id=$1 [L,QSA]

这个网址完美:

www.example.com/category.php?id=1

此网址无效并重定向到 404 页面

www.example.com/category/1/blalba

更多细节:

  1. 其他 4 个文件夹是 word press 网站。
  2. 在 webroot 中有另一个 wordpress 站点。
  3. 在 webroot 中有一个空的 htaccess 文件。 我已经尝试过了
  4. 我已经尝试过:

    重写规则 ^category/([0-9]+)/.*$ /site1/category.php?c_id=$1 [L,QSA]

编辑:

我没有类别文件夹只是为了我想要的 URL,它会使用 id 参数将我重定向到 category.php

这是我得到的错误:

找不到

在此服务器上找不到请求的 URL /site1/category/1/area-rugs。

此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。

【问题讨论】:

  • .htaccess 上面的位置是什么,site1.com 的 DOCUMENT_ROOT 是什么?

标签: apache .htaccess


【解决方案1】:

RewriteRule 需要位于网站根文件夹的 htaccess 文件中。

例如如果目录结构是这样的:

/webroot/site1.com/
/webroot/site1.com/.htaccess
/webroot/site1.com/index.php
/webroot/site1.com/category.php

我会在site1.com.htaccess 文件中有此代码:

RewriteEngine On

# Force www
RewriteCond %{HTTP_HOST} ^site1.com
RewriteRule ^(.*)$ http://www.site1.com/$1 [R=301]

# Handle categories
RewriteRule ^category/([0-9]+) /category.php?c_id=$1 [L,QSA]

【讨论】:

  • 我不需要或没有分类文件夹。我想使用这个 RewriteRule ^category/([0-9]+) /category.php?c_id=$1 [L,QSA] 但它不起作用并将我重定向到 404 页面。有什么方法可以理解这个问题吗?
  • 我没有这样的东西:/webroot/site1.com/category/ 我有这样的东西:/webroot/site1.com/category.php
  • @llioor 好的,我已经根据您的 cmets 简化了我的答案 - 它有效吗?
  • @llioor 如果我回答正确,您能否将此问题标记为已回答?或者如果您自己解决了,请提供您自己的答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2012-09-07
  • 2014-04-11
  • 2015-01-20
  • 2022-10-16
  • 2017-12-19
相关资源
最近更新 更多