Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
.htaccess Htaccess,重定向到漂亮的url_.htaccess_Url_Rewriting - Fatal编程技术网

.htaccess Htaccess,重定向到漂亮的url

.htaccess Htaccess,重定向到漂亮的url,.htaccess,url,rewriting,.htaccess,Url,Rewriting,我今天开始研究Htaccess并进行了尝试。我试图实现的是,无论何时访问localhost/index.php,它都会将您重定向到“pretty”URL(在本例中为localhost/home) 这是我目前的Htaccess文件: RewriteEngine on RewriteRule ^home/?$ index.php [NC,L] 我知道我目前正在做的只是重写/home到/index.php,但我也不知道如何做相反的事情 救命啊 您需要一个新的重定向规则: RewriteEngine

我今天开始研究Htaccess并进行了尝试。我试图实现的是,无论何时访问localhost/index.php,它都会将您重定向到“pretty”URL(在本例中为localhost/home)

这是我目前的Htaccess文件:

RewriteEngine on
RewriteRule ^home/?$ index.php [NC,L]
我知道我目前正在做的只是重写/home到/index.php,但我也不知道如何做相反的事情


救命啊

您需要一个新的重定向规则:

RewriteEngine on

RewriteCond %{THE_REQUEST} /(home|index\.php)[?\s] [NC]
RewriteRule ^(index\.php|home)$ / [NC,R=302,L,NE]

RewriteRule ^home/?$ index.php [NC,L]

您可以尝试以下条件和规则(注释以解释):

重新编写引擎打开
#检查请求是否为'index.php'`
#防止无限循环:
RewriteCond%{REQUEST_URI}^/index.php$[NC]
重写条件%{ENV:REDIRECT_STATUS}!200
#如果条件匹配,则重定向到“/home”:
重写规则^/home[R=302,L,NE]
#为向`/home发出的请求提供'index.php'`
重写规则^home/?$/index.php[NC,L]

你能解释一下你在这里干什么吗?我理解其中大部分内容,但遗憾的是并非全部:(条件检查
请求
(即原始请求,在内部重写时不会更改,从而防止循环)以查看它是否包含
/index.php
。如果是,请将该请求重定向到
/home
,状态代码为
302
(用于临时重定向)。然后,将对
/home
的请求重写到
index.php
@MikeRockett谢谢你的解释,他发送的代码不起作用。@Bilal075-我刚刚在我的服务器上测试了它,它确实起作用。这就是你的
.htaccess
文件的全部内容了吗?@MikeRockett是的,只是复制了整个code他发布了,但似乎不起作用。我仍然可以访问index.php文件,而不被重定向。重写/home也可以,不过,我的设置是在rightStrange中设置的,真的很奇怪-我想不出任何理由它会这样做。当然,我想过将每个请求(发出)发送到header.php(包含在每个文档中)然后验证他请求的内容,然后将他重定向到“pretty”URL。不过这很无聊。代码应该可以正常工作。我想知道如果禁用多视图,它是否可以工作…尝试在顶部添加
选项-多视图
。(不过,这只是一个猜测。)是的,但似乎无法用另一种方法解决问题。使用选项-多视图似乎也不起作用。