难度使用.htaccess重写URL

时间:2017-08-10 16:06:52

标签: .htaccess mod-rewrite url-rewriting

我已经看到了几个答案,但没有一个对我有用。

如何使用.htaccess重写以下内容? mod_rewrite在我的文件中。

http://example.com/local/vendor/index.php?handle=Company

是:

http://example.com/local/vendor/Company

1 个答案:

答案 0 :(得分:0)

  

如何重写以下内容......

这里可能存在一个更基本的问题。你不会在.htaccess中那样重写。你重写来自"朋友" URL返回实际的URL /文件系统路径。所以,反过来说,你改写自:

http://example.com/local/vendor/Company

到您的应用程序所期望的实际URL:

http://example.com/local/vendor/index.php?handle=Company

例如:

RewriteEngine On

RewriteRule ^(local/vendor)/(Company)$ /$1/index.php?handle=$2 [L]

$1$2是对RewriteRule 模式中捕获的群组的反向引用。

上述内容仅与您声明的特定网址相匹配,即。 /local/vendor/Company。我怀疑"公司"是一个占位符?在这种情况下,你需要使这更通用。例如:

RewriteRule ^(local/vendor)/(\w+)$ /$1/index.php?handle=$2 [L]

\w是单词字符的速记字符类。这会排除点(即.),因此在重写为index.php时避免重写循环。

更新:以上假设您的.htaccess文件位于文档根目录中,即。 example.com/.htaccess。但是,如果.htaccess文件位于/local子目录中(即。example.com/local/.htaccess) - 正如您在评论中建议的那样 - 那么您需要调整上述指令以删除{来自local/ 模式的{1}},并从替换中删除斜杠前缀。例如:

RewriteRule