C.E*_*.E. 2 mod-rewrite url-rewriting
Hy,我如何使用mod_rewrite制作规范网址(适用于Facebook"Parsing").
示例:我有:example.com/index.php? page = eventdetails&id = 241
我会制作一个canonincal网址,它应该是这样的:
example.com/ eventdetails/241/将从脚本中忽略的一些文本
我用这个例子测试了它,但它不起作用:
RewriteEngine on
RewriteRule ^/eventdetails/([0-9]+)/$ index.php?show=eventdetails&id=$1
Run Code Online (Sandbox Code Playgroud)
.htaccess文件处于"主页"方向.
我没有找到任何解决这个例子的完整@google,所以我希望有人可以帮助我!
试试这个:
RewriteEngine on
RewriteBase /
RewriteRule ^eventdetails/([0-9]+)/?$ index.php?show=eventdetails&id=$1 [L,NC]
RewriteRule ^eventdetails/([0-9]+)/([a-z0-9\-_]+)/?$ php.php?show=eventdetails&id=$1&name=$2 [L,NC]
Run Code Online (Sandbox Code Playgroud)
这/?意味着/最后的选择.所以example.com/eventdetails/241/和example.com/eventdetails/241将此规则工作.如果事件名称不使用,第一个将仅使用第一个规则.
此URL将使用第二个(如果该事件名称使用)example.com/eventdetails/241/event-name/.现在在这里,我不建议,+因为它不是真正的SEO友好,也许有些人会接受它,但有些不会.我建议-改为.
我添加了L以防万一你有其他规则和非标志的NC标志.
L: [L]标志使mod_rewrite停止处理规则集.在大多数情况下,这意味着如果规则匹配,则不会处理其他规则.这对应于Perl中的最后一个命令,或C中的break命令.使用此标志指示应立即应用当前规则而不考虑其他规则.
NC:使用[NC]标志会使RewriteRule以不区分大小写的方式匹配.也就是说,它不关心字母在匹配的URI中是以大写形式还是小写形式出现.
来自:http://httpd.apache.org/docs/2.3/rewrite/flags.html
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |