【问题标题】:Rewrite Website Links (Anchors, Extensions)重写网站链接(锚、扩展)
【发布时间】:2015-11-15 19:44:47
【问题描述】:

我的网站上有几个页面,其中主页包含一些锚链接,如下所示:

  • mywebsite.com/homepage.php#six

    其他页面只是这样的 PHP 扩展:

  • mywebsite.com/otherpage.php

如果我想删除主页斜线后的所有内容以及其他人的PHP扩展,我该怎么办?

【问题讨论】:

  • 您在这些页面上使用 php 或其他技术吗?为什么不直接从源代码中删除它们?
  • 您能否通过示例(之前和之后)阐明您想要什么以及您想要发生什么。到目前为止,您尝试了什么,您在哪里遇到了问题?
  • @koenpeters 我使用了一些 PHP。包括其他页面,例如发送表单。如何从源代码中删除它们?
  • @trincot 作为示例,我需要将 mywebsite.com/homepage.php#six 更改为主页上的 mywebsite.com/ 并将 mywebsite.com/otherpage.php 更改为 mywebsite.com/otherpage/在其他页面上。我还没有尝试任何东西,只是因为我迷失了关​​于 htaccess 和 javascript 解决方案的文章。有人说我不能用 htaccess 删除 #。我不是为此寻找现成的脚本,只是想问一个方向做选择最好的选择

标签: .htaccess url-rewriting friendly-url


【解决方案1】:
RewriteEngine On

RewriteCond %{THE_REQUEST} ^GET\ /homepage\.php(\S*) [NC]
RewriteRule ^ /%1 [R=301,L]

RewriteCond %{THE_REQUEST} ^GET\ /(.+)\.php(\S*) [NC]
RewriteRule ^ /%1%2 [R=301,L]

RewriteRule ^/?$ /homepage.php [QSA,L]

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [QSA,L]

【讨论】:

  • 此代码删除了 php 扩展,但是当我在“其他页面”上并返回链接为 index.php#two 的主页时,例如我得到 homepage.com/index#two跨度>
  • @EmilGurbanov 那是因为你想隐藏homepage.php
  • 无论如何我都无法摆脱锚点,即使我不隐藏主页
【解决方案2】:

你可以在你的 htaccess 中使用它

RewriteEngine on

RewriteRule ^$ /homepage.php#six [NE,L]

#Remove php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ /$1.php [NC,L]

这将重写

http://example.com/

http://example.com/homepage.php#six

第二条规则从文件中删除 php 扩展名。

【讨论】:

  • 如果我有多个带有锚点的链接,是否需要使用多行?像这样 RewriteRule ^$ /homepage.php#one [NE,L] RewriteRule ^$ /homepage.php#two[NE,L]?
  • 不,你不能将你的主页指向多个#links,你也不能使用相同模式的多个重写规则^$,但是将example.com/one这样的url重写为example.com/homepage.php#one是可能的。
  • 并且没有任何规则可以删除 example.com 之后的所有内容,对吗?当我在页面上并单击锚点时没关系,链接中没有任何内容,但是当我在另一个页面上时,例如使用 index.php#two 的 index.php#three 返回我的主页我在地址行中得到 example.com/index.php#two
猜你喜欢
  • 2017-07-15
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2011-04-17
  • 2018-03-15
  • 2010-12-03
相关资源
最近更新 更多