我通过谷歌搜索和查看不同的示例构建了以下 htaccess 文件。
我的文件现在包含以下规则:
## Enable Rewrite Engine
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
## Add trailing slash to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
## Rewrite URL to exclude wwww.
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
## Actual URL re-writes
RewriteRule ^profile/(.*)/? profile.php?pid=$1 [QSA,L]
RewriteRule ^profile/(.*)/(.*)/? profile.php?pid=$1&view=$2 [QSA,L]
据我了解,这会将诸如http://www.domain.com之类的 URL 重写为http://domain.com,禁用目录文件列表(+FollowSymLinks),并在诸如http://domain.com/test并将其更改为http://domain.com/test/,因此在搜索引擎中该 URL 只有一种表示形式。惊人的!但是,当我单击其中一个 HTML 面包屑中的链接时,我的 URL 会不断附加要重写的 URL 部分......
示例:http:/domain.com/profile/1/shouts/pictures/all/all/all/all/all/
如果我连续点击同一个链接...为什么会这样?这个问题让我彻底疯了!
我试过阅读 mod rewrite 备忘单和教程,但它们似乎对我没有任何意义 :(
编辑:
我应该注意,我正在使用(相对?)链接来回应我的 href 代码。这是正确的做事方式吗?
<a href="<?php echo "profile/". $p_id."/all" ?>">All</a>
编辑2:
我也尝试过使用绝对链接,但遇到了同样的问题。我的 PHP 现在显示:
<a href="<?php echo $websiteUrl. "profile/". $p_id."/all" ?>">
哪里$websiteUrl
=http://domain.com/
有人有什么想法吗?