【问题标题】:Needs some help with an apache mod-rewrite issue需要一些关于 apache mod-rewrite 问题的帮助
【发布时间】:2011-02-02 17:06:29
【问题描述】:

我已经修改了我的 .htaccess 文件,使其具有以下语句

RewriteCond $1 !^index.php$
RewriteRule ^/?([^/]+)$ index.php?c=home&m=details&seo=$1 [L,NS]

这让我可以像这样使用产品 URL:http://domain.com/product_name

但是,当尝试访问与 index.php 处于同一级别的文件时,它总是调用上面的 RewriteRule 并出错。

我需要能够访问如下文件,但当前每个 URL 都尝试加载 index.php。 http://domain.com/about.htm
http://domain.com/terms.htm
http://domain.com/robots.txt
等等

关于如何修改我的 htaccess 文件以使其正常工作的任何建议?

【问题讨论】:

  • 如何区分文件和产品名称?文件会有.htm 之类的扩展名吗?
  • 是的,文件有扩展名,而产品没有。

标签: apache .htaccess mod-rewrite


【解决方案1】:

如果您希望文件胜过产品,您可以在另一种情况下折腾:

RewriteCond $1 !^index.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?([^/]+)$ index.php?c=home&m=details&seo=$1 [L,NS]

...意味着只有当请求的 URI 没有映射到文件时,才应将其视为产品。

拥有像这样的文件胜过产品并不可怕,除非您打算拥有名称为“something.html”和“dynamic.php”或“lenna.jpg”的产品。

【讨论】:

  • 非常好!这似乎行得通!由于每次加载产品时都需要检查文件,因此这样做是否存在任何性能问题?
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
相关资源
最近更新 更多