如何在不干扰主页等链接的情况下从 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.php
或 index.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
子目录。
注意:域不在线它是在本地主机中创建的
我现在在我的项目中面临的一个复杂问题是我想从 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.php
或 index.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
子目录。