【问题标题】:Simple rewrite rule for mod_rewritemod_rewrite 的简单重写规则
【发布时间】:2011-04-27 21:58:01
【问题描述】:

我需要写一个简单的mod_rewrite规则,如下:

something.php ==> somehting (just get rid of the .php)
something_else.php ==> something/else (replace _ with /)

所以,例如它会是这样的:

www.mysite.com/something.php (would be rewritten as) www.mysite.com/something
www.mysite.com/something_else.php (would be rewritten as) www.mysite.com/something/else

由于我不熟悉正则表达式,我认为问一个可以在 5 秒内完成此任务的人比花几天(几周?:P)学习正则表达式和 mod_rewrite 更简单。

谢谢:)

【问题讨论】:

  • 我不确定您想要什么,您能否在 url 栏中提供一些示例输入以及您希望在“后面”找到什么?因为我想你的“某事”的意思是“任何没有 _ 的词”,对吗?
  • 基本上,是的。我在服务器上有一个非常简单的文件结构,所以任何页面都可以通过自己的php文件访问。
  • @Goro:属于 ServerFault,因为它不是编程问题。
  • @Goro:想知道我的回答对你有用吗?
  • @anubhava:有点。至少它让我找到了正确的答案;)

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

在 .htaccess 文件中尝试这些规则:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteRule ^([^_]+)_([^_]+)\.php/?$ /$1/$2 [R=301,L]
RewriteRule ^([^.]+)\.php/?$ /$1 [R=301,L]

这将执行外部重定向,如果您不希望这样做,请从上面删除R=301, 标志。

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 2010-12-25
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多