2015-03-13 102 views
1

美好的一天! 我有我的根文件夹两个脚本:htaccess重写规则两个脚本

/index.php 
/home.php 

两者都接收得到的参数,并显示不同的页面,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。我应该如何改变我的规则与home.php工作,如果有“USERHOME”在查询字符串进行这样的查询可能:

example.org/home/about 

PS

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

工作我需要的方式,关于我的第二个问题。不过,我还没有完成与CSS,JS加载的问题。任何提示请

+0

好的我认为你的需求正在发生一些变化。 “userhome”到底是什么以及它符合您的要求? – 2015-03-13 15:16:36

回答

0

处理CSS不加载的最佳方式是使用<base>标记。这样你可以使用相对URL,它不会破坏你的规则。

这会在你的网站的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] 
+0

你的答案的第一部分工作很好,谢谢。但是,我仍然有一些问题,第二部分。我做了一些编辑,所以我可能会迷惑你。所以,实际上。我需要将以下URI:“example.org/home/about”重写为:example.org/home.php?page=about。除了让js,css工作。 – Sabine 2015-03-13 15:19:47

+0

我根据问题中更新的主页链接编辑了规则。这应该适用于您的规则。 – 2015-03-13 15:24:49