清除子目录中的URL

问题描述

在大量研究stackoverflow之后,我无法弄清楚。 我的网站结构如下

index.PHP
contact.PHP
about.html
forum(dir)
   - index.PHP
   - thread.PHP

我希望我的htaccess做什么

  • 删除.PHP和.html扩展名,例如:访问联系人页面时,网址应为 www.domain.com/contact/www.domain.com/about/
  • 用户访问论坛时,网址应为www.domain.com/forum/thread/10004000/而不是www.domain.com/forum/thread?id=10004000

我不确定该如何解决。我能够删除扩展名,但是在/“正斜杠”部分中失败了

这是我的.htaccess部分

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.PHP -f
RewriteRule ^(.*)$ $1.PHP [NC,L]

解决方法

尝试以下代码删除php扩展名,与您可以添加的html相同

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteRule ^forum/thread/(.+) /forum/thread?id=$1 [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
,

尝试此演示mod_rewrite link