当前位置: 首页 > 面试题库 >

htaccess:从URL添加/删除尾部斜杠

公良运锋
2023-03-14
问题内容

我的网站运行的脚本名为-> WSS壁纸脚本

我的问题 ->我一直在尝试强制删除或在URL末尾添加斜杠,以防止重复的内容并清理URL。

我尝试了各种尝试,尝试了所有可以想到的东西,并尝试从Interweb进行加载,但是还没有运气!这可能是一个快速解决方案,但是我已经看了太多了,因此我可能看不到一些显而易见的东西。

因此,我向您提供所有.htaccess代码:

DirectoryIndex index.php

RewriteEngine on
RewriteRule ^download/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4&download=1 [L]
RewriteRule ^file/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+) image.php?id=$1&width=$2&height=$3&cropratio=$4 [L]
RewriteRule ^preview/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+) wallpaper_preview.php?id=$1&width=$2&height=$3&name=$4 [L]
RewriteRule ^thumbnail/([0-9]+)?/([0-9]+)x([0-9]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/]+) image.php?wallpaper_id=$1&width=$2&height=$3&cropratio=$4&align=$5&valign=$6&file=$7 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&page=$3 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+)/([0-9a-zA-Z?-]+)/p([0-9]+) index.php?task=category&id=$1&name=$2&sortby=$3&page=$4 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+)/([0-9a-zA-Z?-]+)-([0-9]+) index.php?task=category&id=$1&sortby=$3&page=$4 [L]
RewriteRule ^cat/([0-9]+)?/([^/\.]+) index.php?task=category&id=$1&name=$2 [L]
RewriteRule ^tag/([^/\.]+)/([0-9a-zA-Z?-]+)/([0-9]+) index.php?task=tag&t=$1&sortby=$2&page=$3 [L]
RewriteRule ^tag/([^/\.]+) index.php?task=tag&t=$1 [L]
RewriteRule ^profile/([0-9]+)?/([^/\.]+) index.php?task=profile&id=$1&name=$2 [L]
RewriteRule ^profile/comments/([0-9]+)?/([^/\.]+) index.php?task=users_comments&id=$1&name=$2 [L]
RewriteRule ^page/([0-9]+) index.php?task=view_page&id=$1 [L]  
RewriteRule ^register index.php?task=register [L] 
RewriteRule ^lost-password index.php?task=lost_pass [L] 
RewriteRule ^links index.php?task=links [L]
RewriteRule ^news/item/([0-9]+)/([^/\.]+) index.php?task=news&id=$1 [L]
RewriteRule ^news/page([0-9]+) index.php?task=news&page=$1 [L]
RewriteRule ^members/([^/\.]+)-([^/\.]+)/page([0-9]+)? index.php?task=member_list&sort=$1&order=$2&page=$3 [L]
RewriteRule ^members index.php?task=member_list [L]
RewriteRule ^messages index.php?task=messages [L]
RewriteRule ^submit index.php?task=submit [L]
RewriteRule ^search/([^/\.]+) index.php?task=search&q=$1 [L]
RewriteRule ^search index.php?task=search [L]
RewriteRule ^submit index.php?task=submit [L]
RewriteRule ^r-([0-9]+)?-([0-9]+)? go.php?id=$1&ref=$2 [L]
RewriteRule ^r-([0-9]+)? go.php?id=$1 [L]
RewriteRule ^([^/\.]+)/([0-9]+)/([^/\.]+) index.php?task=view&id=$2&name=$3 [L]
RewriteRule ^news/([^/\.]+) index.php?task=news&name=$1 [L]
RewriteRule ^profile/([^/\.]+) index.php?task=profile&name=$1 [L]
RewriteRule ^news index.php?task=news [L]
RewriteRule ^page/([^/\.]+) index.php?task=view_page&name=$1 [L]  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([0-9a-zA-Z'?-]+)/([0-9]+) index.php?task=category&name=$1&sortby=$2&page=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([^/\.]+) index.php?task=view&name=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+) index.php?task=category&name=$1 [L]


## www reslove ##
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
## www reslove ##

## index reslove ##
Options +FollowSymLinks
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ http://www.epicwallpaper.net/$1 [R=301,L]
## index reslove ##

问题答案:

在该RewriteEngine On行下方,添加:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R] # <- for test, for prod use [L,R=301]

实施不拖尾的斜线政策。

要实施斜杠策略:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R] # <- for test, for prod use [L,R=301]

编辑 :评论了这些R=301部分,因为,如评论中所述:

小心点R=301!在那里放置它 会使许多浏览器无限期地缓存.htaccess文件
:如果您不能在所有打开它的机器上清除浏览器缓存,它就会以某种方式不可逆转。测试时,最好选择简单RR=302

完成测试后,您可以使用R=301



 类似资料:
  • 我不太习惯使用htaccess文件,所以我在这一点上挣扎了一段时间: 我想知道在向初始URL添加尾部斜杠(301重定向)后,如何将URL(example.com/foo/bar)重写为(example.com/index.php?q=/foo/bar): 我知道如何单独添加尾随斜杠: 以及如何重写为index.php: 但我就是不知道如何同时做到这两个。。。 欢迎任何帮助! 皮埃尔·弗雷泽

  • 问题内容: 是否可以 使用PHP从字符串中删除斜杠? 问题答案: 当然可以,只需检查最后一个字符是否为斜杠,然后核对该字符即可。 可能会使用另一个(可能更好)的选项-这个选项会删除 所有 尾随的斜杠:

  • 从我搜索的url中删除public/from并尝试执行以下步骤 > 抄袭。htaccess from public/并将其粘贴到root/ 更改服务器。php来索引。php 我试着补充一下 RewriteRule上的RewriteEngine^(.*)$public/$1[L] 我的 /.htaccess删除网址公共它没有工作。 但是,如果我删除了这一行它的工作,但我所有的Url链接到css它的错

  • 我们已经为我的公司创建了一个新网站,我们决定保留旧网站,并使其将所有内容和页面重定向到新网站的类似内容页面。 我已经创建了一个htaccess文件来替换旧网站上的旧文件。 这个htaccess文件包含以下行:

  • 问题内容: 是否有删除范围的有效方法-说的尾巴-从X的元素,如在Java中? 显然有可能一个接一个地删除最后一个元素,这将导致O(X)级性能。至少在某些情况下,应该具有O(1)性能(通过在要删除的第一个元素周围设置参考并设置头/尾参考)。不幸的是,我看不到任何方法或一次全部删除最后一个元素。 目前,我正在考虑通过使用 替换 列表,但是不确定是否具有相同的性能。至少在代码中它会更清楚,另一方面,我会

  • 以下是我的htaccess代码: 我需要制定一个重写规则,如下所示: