【发布时间】:2021-01-25 07:04:50
【问题描述】:
注意:该域不在线,它是在 localhost 中创建的
我现在在项目中面临的一个复杂问题是我想从 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 (.*) $1\.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+pages/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^pages/)^(.*)$ /pages/$1 [L,NC]
当我使用它时,可以在不使用 /pages/ 的情况下访问 URL,但主页会显示
那么.htaccess 代码应该是什么才能在没有任何错误的情况下打开主页,还请说明这是否会扼杀我的 SEO 以及解决方法是什么?
请注意,如果我需要告诉您更多信息,在添加上述代码之前,我已将这些代码添加到 .htaccess 文件中,并且运行良好...
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]
Options -Indexes
php_value display_errors 1
AddHandler application/x-httpd-php .html .htm
【问题讨论】:
-
您希望
/pages/提供什么文件? -
@MrWhite 我希望 URL 为 hostedtools.com/contact-us from hostedtools.com/pages/contact-us,因为所有文件都在 pages 文件夹下
-
是的,但是“主页”呢(导致 403)。您请求
/,据说它被重写为/pages/- 您希望从这里提供什么文件?index.php?index.html?还有什么? -
@MrWhite 是的,这就是这段代码的问题,这段代码是否有任何改进来防止这种情况或新的替代品。
-
但是您在请求主页时希望提供什么文件,这个请求是如何处理的?我认为“主页”是指
http://example.com/? 形式的请求?如果您在/pages/目录中没有DirectoryIndex文档,那么您确实会收到403 响应。我认为您必须有,但是您的问题尚不清楚,我们需要排除明显的问题。您在文档根目录中还有一个index.html文件,这似乎是多余的?
标签: html .htaccess server url-rewriting filepath