如何在不干扰主页等链接的情况下从 URL 路径中删除文件夹名称?

How to remove folder name from URL path without interfering links like the homepage?

注意:域不在线它是在本地主机中创建的

我现在在我的项目中面临的一个复杂问题是我想从 URL 中删除

中的文件夹名称
http://www.example.com/pages/contact-us

http://www.example.com/contact-us

因此在这种情况下删除 /pages/ -

这是我的文件结构-

现在要访问文件,我们必须先访问 pages,然后再访问 contact-us,因此要删除它,我使用了下面的 .htaccess 代码 -

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) \.php [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+pages/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^pages/)^(.*)$ /pages/ [L,NC]

当我使用它时,可以在不使用 /pages/ 的情况下访问 URL,但主页显示

那么 .htaccess 代码应该是什么才能打开主页而不会出现任何错误,另外请提及这是否会破坏我的 SEO,解决方法是什么?

请注意,如果我需要告诉您更多信息,我已将这些代码添加到 .htaccess 文件中,然后再添加上述代码并且它运行得非常好...

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

Options -Indexes

php_value display_errors 1
AddHandler application/x-httpd-php .html .htm 

如果所有页面(包括 主页 )都从 /pages/ 子目录(这是您的代码当前假设的)提供,会更简单。

(旁白: 你实际上并没有在你的文件结构中包含 /pages 子目录的内容,但是如果这个子目录不包含 directory-index 文档,例如 index.phpindex.html (取决于 DirectoryIndex 指令的值)那么你确实会得到 403 Forbidden 响应。与请求任何没有 [= 的目录相同=40=] 文档。)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^pages/)^(.*)$ /pages/ [L,NC]

但是,如果您的主页应该从实际的文档根目录提供,而不是重写到 /pages 子目录(与所有其他 URL 一样),那么您需要在上述规则中包含一个例外堵塞。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/$
RewriteRule (?!^pages/)^(.*)$ /pages/ [L,NC]

防止对 /(文档根目录)的请求在内部重写为 /pages/

或者,对所有目录(文档根目录也是一个目录)进行例外处理。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (?!^pages/)^(.*)$ /pages/ [L,NC]

或者,将您的主页 (index.html) 移动到 /pages 子目录。