【问题标题】:htaccess rewrite different directorieshtaccess 重写不同的目录
【发布时间】:2013-12-06 11:49:33
【问题描述】:

有 4 条重写规则,但只有前 2 条有效:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^news/article/([^/]+)$ /path/to/news/?id=$1
RewriteRule ^news/page/([^/]+)$ /path/to/news/?page=$1
RewriteRule ^company/careers/id/([^/]+)$ /path/to/company/careers.php?id=$1
RewriteRule ^company/careers/page/([^/]+)$ /path/to/company/careers.php?page=$1

/path/to 对所有人总是一样的。两条news 规则完美运行,但两条company 规则却不行。

这里有什么问题?

编辑添加(通过 cmets):

这就是 4 个 URL 的样子。

http://domain.com/folder/folder2/news/article/1 => 正确转换为http://domain.com/folder/folder2/news/?id=1

http://domain.com/folder/folder2/news/page/2 => 正确转换为http://domain.com/folder/folder2/news/?page=2

http://domain.com/folder/folder2/company/careers/id/1 => 应该翻译成http://domain.com/folder/folder2/company/careers.php?id=1,但不是

http://domain.com/folder/folder2/company/careers/page/2 => 应该翻译成http://domain.com/folder/folder2/company/careers.php?page=2,但不是

.htaccess 文件位于http://domain.com/folder/folder2/.htaccess

【问题讨论】:

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

将您的 .htaccess 更改为此:

Options -MultiViews

RewriteEngine On
RewriteBase /folder/folder2/

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^news/article/([^/]+)/?$ news/?id=$1 [L]
RewriteRule ^news/page/([^/]+)/?$ news/?page=$1 [L]
RewriteRule ^company/careers/id/([^/]+)/?$ company/careers.php?id=$1 [L]
RewriteRule ^company/careers/page/([^/]+)/?$ company/careers.php?page=$1 [L]

【讨论】:

  • 谢谢 - 我已经尝试了所有方法来处理多个文件夹,但在此解决方案之前没有成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多