【问题标题】:need help for rewrite rule to make url clean and seo friendly?需要帮助重写规则以使 url 干净和 seo 友好?
【发布时间】:2012-11-09 10:14:14
【问题描述】:

当前模式是 http://example.com/questions.php?qcid=25&name=java,我想将其设为 http://example.com/25/java,其中 qcid 必须是 [0-9]name必须可读和编码。如果它包含超过 1 个单词,则它们之间必须有 '-' 连字符。例如面向对象

【问题讨论】:

  • 这个 qcid 位很简单,但名称是可读和编码的吗?我不太确定你的意思。您可能必须在代码中处理这一点。
  • 你刚刚链接到这个问题

标签: regex .htaccess url-rewriting seo


【解决方案1】:

在 .htaccess 中

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([0-9]+)/([a-z0-9\-]+)(?!(.css)|(.js))$ questions.php?qcid=$1&name=$2 [NC]

在 php 中,您需要捕获名称并去除连字符并在需要时修复大写字母。例如,假设我们希望名称为小驼峰式:

$_GET['name'] = "this-is-a-test-name";

$name = '';
$exploded = explode('-',$_GET['name']);
foreach($exploded as $piece) {
    $name .= ucfirst($piece);
}
// If you have PHP >= 5.3
// $name = lcfirst($name);
// Otherwise
$name{0} = strtolower($name{0});

echo $name;

【讨论】:

  • @mkat 我添加了一个否定的前瞻来排除 css 和 js。您可以根据需要添加其他扩展。
  • 哦,我犯了一个大错误,我没有附加 baseurl...谢谢你的朋友 :)
  • @mkat 没问题。我还添加了一个建议来处理您的姓名表达。您可能需要对其进行更改以适合您的目的,但它应该可以帮助您入门。
  • 感谢好友的支持 :)
【解决方案2】:

这将采用任何以数字开头的 url,然后是斜杠,然后是任何内容,然后将它们转换为如上所示。但是,如果您需要某种 url 编码/解码,则必须在 questions.php 脚本中处理该位

RewriteRule ^(\d+)/(.+) /questions.php?qcid=$1&name=$2 [NC,L]

【讨论】:

  • 它可以正常工作,但也不会加载 css 和 js 文件以及我的 ajax 功能。
  • css/js 的路径是什么,它们也应该被重定向吗?如果有其他限制条件,请发布更多详细信息
  • ########## 开始 - 没有目录列表 ## 注意:+FollowSymlinks 可能会导致问题,您可能需要将其删除 IndexIgnore * 选项 +FollowSymLinks All -Indexes ### ####### End - 没有目录列表 #with out WWW RewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteRule ^(.*)$ example.com/$1 [R=301,L] #disables PHP ERRORS php_flag display_errors off # 从 url 中删除 index.php RewriteRule ^index\.php/?$ / [L,R=301,NC]
  • 根/(文件夹)中的 css/js 不会受到此重写的影响。您刚刚在评论中添加的规则也不会。
  • 哦,我犯了一个大错误,我没有附加 baseurl...谢谢你的朋友 :)
猜你喜欢
  • 2014-05-19
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2010-12-31
  • 2015-03-25
相关资源
最近更新 更多