【问题标题】:How can I rewrite ANY kind of string in htaccess?如何在 htaccess 中重写任何类型的字符串?
【发布时间】:2017-03-22 08:32:25
【问题描述】:

我正在开发一个简单的路由系统,我需要创建一个 RewriteRule,其中所有内容(没有例外作为查询参数传递给我的主 php 文件。

但是,^(.+)$ 和 ^(.*)$ 似乎不起作用。使用它们返回的唯一内容是 '/index.php'。

似乎唯一有效的是 ^([a-zA-Z0-9/_-]*)$ 等,但问题是:我希望这个表达式匹配所有 Unicode 字符,并且我假设手动完成此操作的表达式将非常缓慢且不优雅。

那么...为什么这些所谓的明显表达不能正常工作?

提前致谢。

RewriteEngine on
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]

【问题讨论】:

  • @anubhava 甚至根 / URL 都不起作用。
  • 让我澄清一下:除了“index.php”之外,没有任何东西被传递给“路径”查询字符串参数。这适用于我尝试输入的任何 URL。

标签: regex .htaccess routing


【解决方案1】:

你可以使用这条规则:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php?path=%{REQUEST_URI} [L,QSA]

【讨论】:

猜你喜欢
  • 2015-01-30
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 2013-10-23
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多