使用 .htaccess 从 URL 中删除“/php/”子目录

Remove "/php/" subdirectory from URL with .htaccess

我一直在尝试在我正在构建的网站上实现以下目标 rewrite/redirect,但我正在努力,无法在网上找到正确的答案。

我要重写

http://www.example.com/php/someFile.php

收件人:

example.com/someFile

我已经通过 .htaccess 根文件中的以下代码成功实现了大部分预期结果,但我需要帮助删除 php 子目录:

RewriteEngine on

# remove www from url
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ http://example.com/ [L,R=301,NC]

# redirect /file.php to /file
RewriteCond %{THE_REQUEST} \s/([^.]+)\.php [NC]
RewriteRule ^ /%1 [NE,L,R]

# internally map /file to /file.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)/?$ /.php  [L]

任何帮助将不胜感激。

根据您展示的示例,请您尝试以下操作。 请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine on

# remove www from url
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^ http://example.com%{REQUEST_URI} [L,R=301,NE]

# redirect /file.php to /file
RewriteCond %{THE_REQUEST} \s/php/file\.php\s [NC]
RewriteRule ^ file [R=301]
RewriteRule ^ php/file.php [L]

在您的站点根目录 .htaccess 中这样设置:

RewriteEngine on

# remove www from url
RewriteCond %{HTTP_HOST} ^www\.(example\.com)$ [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

# redirect /php/file.php to /file
RewriteCond %{THE_REQUEST} \s/+(?:php/)?([^.]+)\.php [NC]
RewriteRule ^ /%1 [NE,L,R=301]

# internally map /file to /php/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/php/.php -f
RewriteRule ^(.+?)/?$ php/.php [L]

确保在清除浏览器缓存后进行测试。