apache - 带有 htaccess 的 SEO 友好 url

标签 apache .htaccess mod-rewrite seo permalinks

我知道这个问题已经发布了很多次,我已经搜索过,但找不到我需要的内容。

我正在我的 htaccess 上添加 seo 友好链接,例如:

Options -MultiViews
RewriteBase /
RewriteRule ^list$ list.php [L]

工作完美,当我尝试添加变量时出现问题,例如我需要 url:pages.php?id=terms 变为:page/terms>

所以我尝试了很多方法但不起作用,这就是我尝试的:

Options +FollowSymLinks
RewriteRule ^list$ list.php [L]
RewriteRule ^page/(.*)/ pages.php?x=$1 [L]

PS:+FollowSymLinks-MultiViews有什么区别?

最佳答案

添加QSA标志:

Options +FollowSymLinks -MultiViews

RewriteRule ^list$ list.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([^/]+)/?$ pages.php?x=$1 [L,QSA,NC]
  • QSA (查询字符串追加)标志在添加新查询参数时保留现有查询参数。
  • 有关 Apache's content negotiation 的信息.
  • +FollowSymLinks使 Apache 遵循符号链接(symbolic link)。
  • -MultiViews make 关闭内容协商

对于 CSS/JS/图像:

  1. 在 css、js、图像文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 开头。或斜杠/ .
  2. 或者您可以尝试将其添加到页面标题中:<base href="/" />

关于apache - 带有 htaccess 的 SEO 友好 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21526341/

相关文章:

apache - 子域不起作用

Apache 2.2 mod_proxy 故障转移/负载平衡

.htaccess - htaccess 2变量问题

.htaccess - Htaccess 从 URL 中删除字符串

apache - 如何将请求重定向到站点根目录上方的特定文件?

php - .htaccess错误无法按预期工作

wordpress - Chrome 版本 44.0.2403.xx 的 HTTPS header 问题

apache - 更改 Apache Ambari 使用的默认 Web 服务器

regex - Apache mod_rewrite 正则表达式限制匹配最大量词?

php - 将特定文件夹发送到 HTTPS,并将其余文件夹从非 www 发送到 www,同时保持 Laravel 路由的其余部分正常工作?