繁体   English   中英

HTACCESS:需要重写URL以锚定链接URL

[英]HTACCESS: Needing to rewrite URL to anchor link URL

我遇到了一个问题,这似乎并不新鲜或令人兴奋,但我发现的所有答案似乎都没有效果。 我觉得为.htaccess编程有一百万种方法来解决问题,但我永远找不到/使用正确的方法。

我想采取一个已经很干净的网址:
http://example.com/page/link

并做一个内部重写:
http://example.com/page#link

我的消息来源问:

  • http://stackoverflow.com/questions/2872490/how-to-use-htaccess-to-rewrite-url-to-html-anchor-tag
  • http://stackoverflow.com/questions/21391449/how-to-use-sign-as-an-anchor-while-url-rewriting-with-htaccess-on-apache
  • http://stackoverflow.com/questions/29165917/htaccess-rewrite-url-to-hash-anchor-on-homepage
  • http://stackoverflow.com/questions/2686075/mod-rewrite-with-anchor-link
  • http://stackoverflow.com/questions/2285193/htaccess-redirect-to-page-with-anchor-link

我已经阅读了所有的答案和评论,以找到解决我的特定问题的方法。 到目前为止,没有任何工作。 我甚至无法进行简单的测试工作,似乎重写根本不起作用。

你可以在这里找到我当前的.htaccess文件: http//pastebin.com/xJWHq70f

注意 :Web主机是Netfirms。 我已经禁用了Netfirms的默认.htaccess foolery。

所以回顾一下,我正在尝试获取一个已经很干净的URL并进一步解析并重写从page / test到page #test。 我的.htaccess的最后一行确实有

RewriteRule ^ about-me /(.*)$/ about-me#$ 1 [NE,R](不起作用)

理论上,在页面上创建一个链接到about-me/who-am-i应该带我到http://example.com/about-me#who-am-i同时保持地址栏看起来像http://example.com/about-me/who-am-i 这时我有一个特定的页面,我希望这个重写是为了启用about-me.php页面。

谢谢,
道格

PS
很抱歉没有10+代表,所以我可以正常发布所有链接

2016年1月27日更新

进一步的审查和进一步的调查证明了我不想做的事情。 没问题。 我换了档,改变了我希望导航系统工作的方式。

相反,我将使用about-me页面作为基础并创建所需的额外必要页面。 由于页面上有很多文本,最好将其分解为更好的阅读部分 - 现在是单独的页面。

利用威廉提出的想法,我能够快速拼凑出一个解决方案。 我原来的.htaccess代码删除了.php扩展名然后将.php扩展名重定向到非扩展名等价格被破坏并导致500错误。 固定!

使用以下代码:

RewriteRule ^about-me/(.*) /$1 [L,NC]

我可以有关于 -me / statsabout-me / testing123的任何URL,只要实际的stats.php或testing123.php存在于根目录中,它将在内部正确重定向 - 保持一个漂亮的干净URL,而404'ing如果该文件不存在。

好的,重要的是要确保你进行内部重写,而不是外部重写

所以这将有效:

RewriteRule ^page/(.*) /page#$1 [L]

确保不添加[R = 301]标志(或R的任何其他值),否则它将向客户端提供响应。 根据RFC 3986和RFC 1738,客户端在解除引用URI时会删除片段标识符。

编辑

虽然Apache会重写URL以包含片段,但PHP可能会barf。 根据RFC 1738:

字符“#”是不安全的,应始终进行编码,因为它在万维网和其他系统中用于从可能跟随它的片段/锚标识符界定URL ...所有不安全的字符必须始终在URL ...例如,字符“#”必须在URL中编码,即使在通常不处理片段或锚标识符的系统中也是如此,因此如果将URL复制到另一个使用它们的系统中,它将不会必须更改URL编码。

因此,如果您希望PHP安全地解析它,您将需要转义该片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM