2

我有这个 htaccess 代码:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/?$ index.php?p=$1 [NC,L]
</IfModule>

我有索引文件,其中根据 p 值包含特定的 php 文件。它工作得很好,但我想添加新的东西。

  1. 该代码应该与 http://mypage.com/contacthttp://mypage.com/contact/(尾部斜杠)相同

  2. 我希望能够使用更深的 URL,但是将它们一起发送到 php http://mypage.com/contact/me 我想要 index.php,在这种情况下,接收这个变量“contact/me”,稍后我将分离到一个数组并像那样使用它。

另外我的小问题是,如果我执行此子 URL(没有更好的词),我的 CSS 路径就会混乱,因为页面认为它位于联系人文件夹中。可以修复吗?

4

1 回答 1

0

现在,你的尾部斜线被[^.]+表达式吞噬了,所以你需要通过?+. 否则,在 URI 中有多个斜杠应该符合这些规则。所以这:

RewriteRule ^([^.]+)/?$ index.php?p=$1 [NC,L]

需要是这样的:

RewriteRule ^([^.]+?)/?$ index.php?p=$1 [NC,L]

就 css 而言,您要么需要更改 css 链接,使其成为绝对 URL 路径(它们以 a/开头并从文档根目录开始,例如/css/my.css),要么您可以尝试在标题中添加相对 URL 基础你的网页:

<base href="/">

(或任何 URL 基础应该是)。

于 2013-07-05T20:57:00.767 回答