我被要求在本地克隆一个实时网站。
我已经完成了所有设置并且完全有效,除了链接不正确之外,我已经更改了.htaccess
:
我的根网址是:
localhost/httpdocs
当我去:
localhost/httpdocs?path=homepage_video
例如,它成功转到主页视频。
但是,所有链接都已设置为:
localhost/httpdocs/homepage_video
我希望这些链接也能正常运作。
我的.htaccess
就是这样:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?path=$1 [L,QSA]
AddType text/x-component .htc
Options +FollowSymLinks
这对我来说显然不起作用,在主页localhost/httpdocs
上,一切正常工作(所有图片和所有内容都正确连接,一切看起来都不错),但点击此处的链接将无效(因为如果它是?path=homepage_video
,则/homepage_video
无效。
答案 0 :(得分:1)
将重写规则更改为
RewriteEngine On
RewriteBase /httpdocs/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([^/]+/)*[^/]+)/?$ index.php?path=$1 [L,QSA]
编辑 :(此正则表达式如何工作?)
这匹配所有嵌套目录:
[^/]+/
= [^/]
除了/
之外的任何事情; +
一次或多次; /
后跟斜杠
([^/]+/)*
= (..)*
重复匹配()
内的内容,*
零次或多次
这匹配最后一个URL目录:
<nested-dir-regex>[^/]+
=除了/
之外的任何事情;一次或多次+
(<nested-dir-regex>[^/]+)
=周围()
可以抓取为$1
(<nested-dir-regex>[^/]+)/?
=可选,后跟最后/
;匹配?
零或一个
^(<nested-dir-regex>[^/]+)/?$
= ^
表示路径字符串的开头; $
表示路径字符串的结尾