我有一个特殊的情况,我找不到一个好的解决方案。我已经在这里看过几十个问题/答案,但似乎没有一个能解决我的问题!
我有这样的网址:
https://subdomain.domain.com/{user-name}/{app-name}/
“user-name”和“app-name”每次都可以更改,我需要将其重定向到
index.php?u={user-name}&a={app-name}
但如果网址仅为https://subdomain.domain.com/{user-name}/
,我需要将其重定向到
store-list.php?u={user-name}
(显示该用户所有可用应用的列表)。
我的.htaccess目前是这样的:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /store-list.php?u=$1 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?u=$1&a=$2 [L]
它在两种情况下都能完美地重定向,但每次调用“真实”文件都不起作用(例如调用我的html中的js或css文件)。
我做错了什么?
答案 0 :(得分:1)
将一个RewriteCond集应用于多个规则
是的,我们真的很接近......但RewriteCond仅适用于一条规则。是什么让我们失望。让我们使用一些棘手的逻辑并将条件反过来:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L,S=2]
RewriteRule ^([^/]+)/?$ /store-list.php?u=$1 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?u=$1&a=$2 [L]
条件是,如果文件执行存在,请保持不变,并跳过下两条规则(S=2
)。