所以我有这个规则
# Rewrite for account view
RewriteRule ^([^/]+)/([^/]+)/?$ account.php?type=$1&user=$2 [NC,L]
转换为http://www.site.com/user/s2xi
但现在我希望通过网址获得更多创意,并为其添加主题位置:
http://www.site.com/user/s2xi/theme/slate/
这样我就可以访问我只需要输入
的主题的CSS文件http://www.site.com/user/s2xi/theme/slate/css/slate.css
如何修改或添加另一个RewriteRule以获得我想要的结果?
另外,我如何能够在PHP代码中使用新网址应用和访问我的主题文件?
我当前的主题路径为library/themes/users/slate
,子文件夹为/css
,/js
我的尝试:
# Rewrite for user theme location
RewriteRule ^([^/]+)/([^/]+)/theme/([^/]+)/?$ account.php?type=$1&user=$2$theme=$3 [NC,L]
答案 0 :(得分:3)
我建议将所有请求重定向到一个文件,例如index.php
然后使用$_SERVER['REQUEST_URI']
获取网址。然后,您可以使用此数据,例如将其爆炸。然后,您将能够动态确定将加载哪个页面。
您可以使用以下代码将所有请求重定向到index.php
:
RewriteEngine on
RewriteRule .* index.php
您还可以排除将特定文件类型重定向到此PHP文件。例如CSS,JavaScript等静态内容。例如,以下代码将排除所有带有CSS,JS,PNG或JPG扩展名的文件:
RewriteEngine on
RewriteRule !\.(css|js|png|jpg)$ index.php
要排除所有存在的文件,可以使用以下代码:
RewriteEngine on
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule .* index.php
答案 1 :(得分:1)
您可以将其余路径放入第三个参数:
RewriteRule ^([^/]+)/([^/]+)/?(.*)$ account.php?type=$1&user=$2&rest_of_the_url=$3 [NC,L]
[编辑]
好的,对于你的情况,我认为你应该写.htaccess重定向所以对于css和js文件apache直接转到它们。因为php处理是不必要的开销,除非你想检查用户凭证或类似的东西。
RewriteRule ^([^/]+)/([^/]+)/theme/([^/]+)/(.+\.(?:css|js|png|jpg))$ /library/themes/users/$3/$4 [NC,L]