Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何从URL路径中删除文件夹名称而不干扰像主页这样的链接?_Html_.htaccess_Server_Url Rewriting_Filepath - Fatal编程技术网

Html 如何从URL路径中删除文件夹名称而不干扰像主页这样的链接?

Html 如何从URL路径中删除文件夹名称而不干扰像主页这样的链接?,html,.htaccess,server,url-rewriting,filepath,Html,.htaccess,Server,Url Rewriting,Filepath,注意:域未联机,它是在本地主机中创建的 我现在在项目中面临的一个复杂问题是,我想从URL中删除文件夹名 http://www.example.com/pages/contact-us 到 因此,在本例中删除/pages/- 这是我的文件结构- 现在要访问文件,我们必须访问页面,然后首先与我们联系,因此要删除此文件,我使用了下面的.htaccess代码- Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / Re

注意:域未联机,它是在本地主机中创建的

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

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

因此,在本例中删除
/pages/
-

这是我的文件结构-

现在要访问文件,我们必须访问
页面
,然后
首先与我们联系
,因此要删除此文件,我使用了下面的
.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
代码应该是什么,这样才能打开主页而不出现任何错误,还请说明这是否会扼杀我的搜索引擎优化,修复方法是什么

请注意,如果我需要告诉您更多信息,在添加上述代码之前,我已经将这些代码添加到了.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/
子目录(这是您的代码当前假定的)提供的,则会更简单

(旁白:您实际上没有在文件结构中包含
/pages
子目录的内容,但是如果该子目录不包含目录索引文档,例如
index.php
index.html
(取决于
DirectoryIndex
指令的值)然后您将得到一个403禁止响应。这与请求任何没有目录索引文档的目录相同。)

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/$
RewriteRule (?!^pages/)^(.*)$ /pages/$1 [L,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (?!^pages/)^(.*)$ /pages/$1 [L,NC]
防止对
/
(文档根目录)的请求在内部重写为
/pages/

或者,为所有目录(文档根也是一个目录)设置一个例外。例如:

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

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

您希望从
/pages/
中获得哪些文件?@MrWhite由于所有文件都位于页面文件夹下,所以我希望URL是从中获得的是的,但是“主页”(结果是403)又如何呢。您请求的
/
,应该被重写为
/pages/
-您希望从这里获得什么文件
index.php
<代码>索引.html?还有其他问题吗?@MrWhite是的,这是代码的问题。此代码是否有任何改进,以防止出现此问题或新的替换问题。但是在请求主页时,您希望收到什么文件?此请求如何处理?所谓“主页”,我想你指的是
http://example.com/
?如果
/pages/
目录中没有
DirectoryIndex
文档,那么您确实会得到403响应。我想你一定有,但你的问题并不清楚这一点,我们需要排除显而易见的可能性。您在文档根目录中还有一个
index.html
文件,这似乎是多余的?谢谢@MrWhite,当我将您的代码应用到.htaccess(位于pages文件夹中)时,它实际上工作得很好抱歉,但答案没有工作,它再次工作,它没有找到对象!在此服务器上找不到请求的URL。参考页面上的链接似乎错误或过时。请将错误告知该页的作者。如果您认为这是服务器错误,请联系网站管理员。错误404您请求的URL是什么?您希望将请求重写到的底层文件系统路径是什么?我首先请求主页,然后请求homepage/about-us.html时,它是说在错误404中找不到对象。我现在可以做什么请告诉我现在无法解决任何问题