我试着将三个不同的清洁URL规则

我试着将三个不同的清洁URL规则

问题描述:

我的问题是,我想获得三个简单的规则工作,但我的知识太少,让他们一起工作:
我试着将三个不同的清洁URL规则

这是显而易见的:

RewriteRule ^login$ /login.php [L] 
RewriteRule ^register$ /register.php [L] 

domain.com/logindomain.com/register

其次,因为我已经用于显示数据只有一个页面,我想它的网址是为更多钞票一样简单,如:

RewriteRule ^(.*)$ /data.php?id=$1 [L] 

应译为: domain.com/1a2s3d

作为第三,我希望能够改变URL与激活码:

RewriteRule ^register/activate/([^/]+)$ /register.php?action=activate&code=$1 [L] 

其中鳍盟友应该被翻译成: domain.com/register/activate/some-hash

我知道只是简单的基本知识。而且我不能将这三种想法混合到一个工作的htaccess文件中。第二条规则是服务器给我500错误,第三条规则注册页面工作,但css文件路径被翻译成domain.com/register/activate/theme/style.css而不是domain.com/theme/style.css

任何帮助,将不胜感激。

与刚刚尝试:

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^login$ /login.php [L] 
RewriteRule ^register$ /register.php [L] 
RewriteRule ^register/activate/([^/]+)$ /register.php?action=activate&code=$1 [L] 
RewriteRule ^(.*)$ /data.php?id=$1 [L] 
+1

短anwers是最好的,谢谢! 但是,这条规则是什么意思 - RewriteRule^- [L]? – user3038744 2014-11-21 00:27:37

+1

使用'-f'和'-d',您只需检查是否没有具有相同名称的实际文件或目录。如果是这样,你不会改变任何东西 – Croises 2014-11-21 01:38:44