【问题标题】:Rewriting URLs containing # and htaccess removing formatting重写包含 # 和 htaccess 的 URL 删除格式
【发布时间】:2019-08-21 22:02:03
【问题描述】:

我想使用 .htaccess 来更改我网站的某些 URL 的名称,但我遇到了一些问题。

  1. 我不知道如何更改包含 # 的 URL 名称(重定向到 ID)。例如,我想将 www.website.com/gallery.php#bottom 更改为 www.website.com/gallery,但是,当我键入下面的代码时,它就像我重定向到 gallery.php(不是到 id="bottom" 的元素)。
RewriteEngine on 
RewriteRule "^gallery$" gallery.php#bottom [NC,L]
  1. 我遇到的另一个问题是当我尝试在 url 末尾添加一个“/”时,例如,如果我想将 www.website.com/gallery.php 更改为 www.website.com/ gallery/,打开的页面是所需的页面,但是所有格式(来自 bootstrap 和 style.css)都丢失了。我尝试使用以下代码:
RewriteEngine on 
RewriteRule "^gallery/$" gallery.php [NC,L]
  1. 与上述类似,如果我尝试将 www.website.com/contacts/feedback.php 更改为 www.website.com/asdf,我会丢失格式。我使用以下代码:
RewriteEngine on 
RewriteRule "^asd$" contacts/feedback.php [NC,L]

我想问一下如何解决这些问题?

【问题讨论】:

    标签: php html .htaccess


    【解决方案1】:

    关于您的问题 #1

    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^#/(.*)$ /$1 [L,NC,R]
    

    测试完后,将 R 更改为 R=301。确保在测试前清除缓存。

    对于问题 #2:删除文件扩展名 .php

    RewriteEngine on
    RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
    RewriteRule ^ /%1 [NC,L,R]
    
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^ %{REQUEST_URI}.php [NC,L]
    

    前 3 行有助于将带有 .php 的请求重定向到不带文件扩展名的请求。最后两行删除文件扩展名。

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      相关资源
      最近更新 更多