htaccess RewriteRule两个脚本

时间:2015-03-13 15:03:47

标签: php apache .htaccess mod-rewrite

美好的一天! 我的根文件夹中有两个脚本:

/index.php
/home.php

它们都接收get参数并显示不同的页面,f.ex:

index.php?page=info
home.php?page=about

1)当我尝试通过这个做干净的URI时:

RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1 #working ok
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1 #doesn't load css,js

我发现了三个建议:而是将css,js文件夹的路径应用于htaccess,使用标记或使用绝对路径。 我想知道是否有其他方法可以完全由htaccess完成。或者,如果有一个f.ex,是否可以更改查询字符串以删除“/”: 我插入

example.org/info/

我的字符串会自动变为

example.org/info

2)我的htaccess仅适用于index.php。如果查询字符串中有“userhome”以使此类查询成为可能,我应该如何更改我的规则以使用home.php:

example.org/home/about

P.S

RewriteRule ^home/([a-zA-Z0-9]+)$ home.php?page=$1

关于我的第二个问题,按照我需要的方式工作。但是我还没有完成css,js loading的问题。有任何提示,请

1 个答案:

答案 0 :(得分:0)

处理CSS未加载的最佳方法是使用<base>标记。通过这种方式,您可以使用相对网址,并且不会违反您的规则。

这将放在您网站的head部分..

<base href="http://www.example.com/" />

您可以根据自己的要求尝试这些规则。

#Redirect to home.php
RewriteRule ^home/([a-zA-Z0-9]+)$ home.php?page=$1 [L]
#Remove the trailing slash
RewriteRule ^([a-zA-Z0-9]+)/$ /$1 [R=301,L]
#Redirect to index.php
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1 [L]