1

我被要求在本地克隆一个实时站点。

我已经设置好所有东西并且它完全可以工作,除了链接不正确,我已经改变.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)。

4

1 回答 1

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>[^/]+)/?$=^表示路径字符串的开始;$表示路径字符串的结尾

于 2013-08-15T03:03:02.073 回答