【问题标题】:rewrite rules with apache does not work用 apache 重写规则不起作用
【发布时间】:2016-02-04 18:50:47
【问题描述】:

我尝试通过 .htaccess 制定特定的重写规则,但我需要帮助,它不起作用。

这是我的网址: http://mywebsite.net/aaa-bbbb/cccc

aaa = 动态参数 ( [a-z] )
bbb = 动态参数 ( [a-z] )
cccc = 动态参数,但可选 ( [a-z] )

我想将用户重写到这个网址:
http://mywebsite.net/mydir/ccc?x=aaa&y=bbbb**

url 仍然会在标签栏上显示http://mywebsite.net/aaa-bbbb/cccc

我试试这个 重写规则 ^([a-z]+)-([a-z]+)/([a-z]+)$ mydir/$3 [L]

但它不起作用

谢谢!

【问题讨论】:

  • 而“但它不起作用”究竟是什么意思?你有错误吗?重定向是错误的吗?什么都没有发生吗?宇宙会内爆吗?
  • 您的 http 服务器错误日志文件包含该请求的哪些条目?
  • 首先我有 404 "GET /sdsds-test/sdqsd HTTP/1.1" 404 13617 和 200 "GET /favicon.ico HTTP/1.1" 200 7770 "mywebsite.net/sdsds-test/sdqsd" 但我不是很好页面
  • 您将条目发布在 access 日志文件中,而不是 error 日志文件中。不过,我试图在下面写一个一般性的答案。

标签: mod-rewrite url-rewriting rewrite


【解决方案1】:

将请求重写为

http://mywebsite.net/aaa-bbbb/cccc

内部

/mydir/ccc?x=aaa&y=bbbb

你需要这样一个重写规则:

RewriteEngine on
RewriteRule ^([a-z]+)-([a-z]+)/([a-z]+)$ /mydir/$3?x=$1&y=$2 [L]

注意:上面的规则具有在 http 服务器主机配置中使用的语法。如果您真的想使用 .htaccess 样式文件,则需要使用稍微修改的语法,因为这些文件适用于 relative 路径:

RewriteEngine on
RewriteRule ^([a-z]+)-([a-z]+)/([a-z]+)$ mydir/$3?x=$1&y=$2 [L]

您可以在重写目标中发现缺少的/.htaccess 样式文件必须位于包含 mydir 文件夹的文件夹中才能正常工作。此外,必须在 http 服务器配置中启用对此类文件的解释。


一般注意事项:.htaccess 样式文件出了名的容易出错,难以调试,而且它们真的会毫无意义地减慢 http 服务器的速度。它们仅作为最后一个选项提供给那些 有权访问 http 服务器主机配置的人。例如,对于欺骗共享托管服务提供商。一般来说,您应该始终更愿意将此类规则放在主机配置本身中。

【讨论】:

    猜你喜欢
    • 2014-02-02
    • 2017-08-31
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    相关资源
    最近更新 更多