2011-07-06 51 views

回答

1

如果你只是想发送的日期在友好的格式,这是一个非常简单的重定向:

# Untested example 
RewriteEngine On 
RewriteRule ^events/(\d{2})/(\d{2})/(\d{4})/.* events.php?date=$3-$2-$1 

然而,mod_rewrite的不会做魔术。从01/01/2011/summer-trip无法获得10


编辑:我想我不应该把这个问题从字面上并提供一些线索。如果你想通过一个友好的字符串链接事件,你需要做一对夫妇的内部变化:

  1. 事件表,添加一个新列在您的数据库,并使其独特的(大多数DBMS允许创建独特索引)。那个新专栏(我们称之为url_title)将保存友好的字符串。

  2. 调整您的PHP脚本,使其以url_title作为参数,而不是数字键。

而且你的mod_rewrite的规则将是这样的:

# Again, untested 
RewriteEngine On 
RewriteRule ^events/\d{2}/\d{2}/\d{4}/([^/]+)/?$ events.php?url_title=$1 [L] 
+0

感谢您的帮助,我有一些代码也可以做到这一点,你们刚刚解释过。我的代码是 RewriteRule^events /([0-9 _-] +)/([a-zA-Z0-9 _-] +)$ evnts.php?edate = $ 1&ename = $ 2 我的问题在于,am使用聪明,这将改变我的JavaScript和CSS路径..任何想法这里做错了什么!? – Nuhman

+0

@Nuhman,这是一个完全不同的主题。如果使用相对路径,则无法自由移动文档。改用绝对路径。 –

2

试着这么做:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] 

这是一个包罗万象的重定向 - 如果文件不存在匹配的请求,该请求被传递与原网址的index.php 。 (这是大多数的框架,wordpress等做到这一点)

然后,你将有index.php中可用的$ _GET ['url'],你可以在php中解析,并做任何需要做的检查/负载相关内容。

请注意,您需要确保您在PHP中实现404错误 - 因为apache将永远不会再有404本身。

+0

只有如何编译重定向URL以及如何重定向则缺少的一部分。 – hakre