【问题标题】:htaccess to ignore specific part of the URLhtaccess 忽略 URL 的特定部分
【发布时间】:2013-10-02 17:53:30
【问题描述】:

当 URL 在域后有 /en/ 时,我正在尝试将网站的语言更改为英文。当 url 在域之后有 /en/ 时,PHP 会更改翻译文件。

我的系统将 /en/ 部分添加到所有链接,甚至 CSS 文件的 URL 等。它工作正常,但是当该部分位于 URL 中时,我无法访问任何文件。即使 /en/ 部分在那里,我仍然想找到所有文件和文件夹。

例如:

http://domain.com/en/images/image.png

从这里显示图像

http://domain.com/images/image.png

但它必须在 URL 中保留 /en/ 部分,所以语言不会改变。

我的 .htaccess 文件中有这个:

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

这会重定向 URL,但会删除 /en/ 部分。 :/

RedirectMatch ^/en/(.*) /$1

那么甚至可以重定向并保留原始网址吗?如果不是,是否可以仅在现有文件夹或文件时重定向(并更改 URL)?谢谢。 :)

【问题讨论】:

  • 查找:“内部重写 mod_rewrite”

标签: php regex .htaccess mod-rewrite redirect


【解决方案1】:

将您的 RedirectMatch 行替换为:

RewriteRule ^en/([^.]+\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /$1 [L,NC]

【讨论】:

  • 谢谢,当我把它放在 Options +FollowSymlinks 之后时,它起作用了。 :)
  • 很高兴知道它有效,请考虑将其标记为“已接受”,以便将来遇到类似问题的用户可以轻松看到它。
猜你喜欢
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多