繁体   English   中英

htaccess基于目录和子目录的重定向

[英]htaccess redirect based on directories and subdirectories

我有一个特殊的情况,我找不到一个好的解决方案。 我已经在这里看到了数十个问题/答案,但是似乎都无法解决我的问题!

我有这样的网址: https://subdomain.domain.com/{user-name}/{app-name}/ : https://subdomain.domain.com/{user-name}/{app-name}/ {user-name}/{app-name} https://subdomain.domain.com/{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文件的调用)。

我究竟做错了什么??

使一个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 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM