在我的网站上,我的URL路径中仅使用3个斜杠:
https://example.com/this/isatest/
现在,我使用.htaccess
,这使得(有可能)在URL上添加任意数量的内容(作为副作用)
https://example.com/this/isatest/hipperdihopperdus/pizza/bacon/with/cheese
我想自动删除“ isatest”之后的所有内容,同时使用.htaccess
保留斜杠。
这是我的.htaccess
当前的样子:
Options -Indexes
Options +FollowSymLinks
RewriteEngine on
# 301 Redirect all requests that don't contain a dot or trailing slash to
# include a trailing slash
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{THE_REQUEST} /index\.html [NC]
RewriteRule ^index\.html$ /? [R=301,L,NC]
RewriteRule ^listen/$ /console/ [NC,L]
# Rewrites urls in the form of /parent/child/
# but only rewrites if the requested URL is not a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [L,QSA]
我该如何实现?
答案 0 :(得分:1)
作为第一条规则,在RewriteEngine
指令之后,您可以执行以下操作:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+/[^/]+/). /$1 [R=302,L]
这将检查两个路径段和一个斜杠之后是否还有其他内容(点),并重定向到已删除的“其他内容”。
请注意,这是302(临时)重定向。一旦确定重定向正常,请仅将其更改为301(永久)重定向。这是为了避免浏览器在测试时缓存错误的重定向。
更新:避免重定向以可识别的文件扩展名结尾的文件可能会更有效。或者也许排除您的静态资源的已知目录位置。例如:
RewriteCond %{REQUEST_URI} !\.(css|js|jpg|png|gif)$ [NC]
RewriteRule ^([^/]+/[^/]+/). /$1 [R=302,L]
OR
RewriteCond %{REQUEST_URI} !^/static-resources/
RewriteRule ^([^/]+/[^/]+/). /$1 [R=302,L]
答案 1 :(得分:1)
您可以在<{> {1}}行以下添加该规则 :
RewriteEngine On