Php 如何使用.htaccess删除文件扩展名和尾部斜杠

Php 如何使用.htaccess删除文件扩展名和尾部斜杠,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,我想所有可能的网址用来访问我的网站,以结束一个没有文件扩展名和尾随斜杠的网址。目前,我已经能够分别解决文件扩展名和尾随斜杠问题,但是如果使用没有文件扩展名和尾随斜杠的URL,它会将它们发送到我的404页面,例如。这应该以获取文件news.php作为结束,但它重定向到我的404。以下是我当前的.htaccess: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_UR

我想所有可能的网址用来访问我的网站,以结束一个没有文件扩展名和尾随斜杠的网址。目前,我已经能够分别解决文件扩展名和尾随斜杠问题,但是如果使用没有文件扩展名和尾随斜杠的URL,它会将它们发送到我的404页面,例如。这应该以获取文件news.php作为结束,但它重定向到我的404。以下是我当前的.htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Redirect to domain without www.
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule .* https://%1%{REQUEST_URI} [R=301,L]

# 404 errors
ErrorDocument 404 /404.php

# Remove file types
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]

# Remove trailing slashes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^(.+?)/$ /$1 [R=301,L]

我希望用于访问我的站点的所有可能的URL最终都是一个没有文件扩展名和尾随斜杠的URL。
确定,然后只提供这样的URL。我不认为你必须删除(让我们说修复)的网址部分。如果有人使用扩展名(在浏览器中手写),请将其指向404。为什么要修复/删除?并给出更多示例,因为需要帮助的信息太少了。假设您有一个名为
news.php的
news.php
,可以重定向到
news
。在这一点上,问题是PHP文件是否得到了请求
news.php
index.php
或什么?如果文件
news.php
存在,则重读没有意义。在这里最好解释一下。但是你必须给出更多的信息,比如
谁真正处理了这个请求?
你应该更新的东西你的问题,im out:)将你的尾部斜杠删除规则移到
ErrorDocument
行上方,然后清除浏览器缓存。@anubhava,行了!谢谢,我不知道。htaccess的顺序会对它的行为产生如此大的影响,感谢您的帮助虽然它现在处于工作状态,但是如果原始URL是
http://www.example.com/news/
这对SEO排名和用户体验都不好。
我希望用于访问我的网站的所有可能的URL都以一个没有文件扩展名和尾随斜杠的URL结尾。
只有这样才可以像那样发送url。我不认为你必须删除(让我们说修复)的网址部分。如果有人使用扩展名(在浏览器中手写),请将其指向404。为什么要修复/删除?并给出更多示例,因为需要帮助的信息太少了。假设您有一个名为
news.php的
news.php
,可以重定向到
news
。在这一点上,问题是PHP文件是否得到了请求
news.php
index.php
或什么?如果文件
news.php
存在,则重读没有意义。在这里最好解释一下。但是你必须给出更多的信息,比如
谁真正处理了这个请求?
你应该更新的东西你的问题,im out:)将你的尾部斜杠删除规则移到
ErrorDocument
行上方,然后清除浏览器缓存。@anubhava,行了!谢谢,我不知道.htaccess的顺序会对它的行为产生如此大的影响,谢谢你的帮助虽然它现在处于工作状态,但是如果原始URL是
http://www.example.com/news/
这对SEO排名和用户体验都不好。