.htaccess RewriteRule 用于导航

.htaccess RewriteRule for navigation

我需要重定向

www.monsite.fr/css

www.monsite.fr/index.php?p=css

在 .Htaccess 中

我尝试了很多在网站上找到的答案,但都没有成功,例如:.htaccess RewriteRule for directory

我尝试在其他网站上制作正则表达式,但经过测试后它不起作用

例子:

RewriteRule ^([^/]*)$ /index.php?p= [L]
RewriteRule \/([^\/]*)$ /index.php?p= [L]
RewriteRule ^([^.]+?)/?$ /index.php?p= [L,QSA]

但 none 有效。

我使用了一个告诉我这些规则按照我的意愿行事的网站:

RewriteEngine On
RewriteRule ^([^/]*)$ /index.php?p= [L]

但最后我被重定向到

www.monsite.fr/css/?p=css

怎么了?

通过搜索,我找到了这个答案:

RewriteEngine On    
RewriteBase /
RewriteRule ^([^/]+)/?$ index.php?p= [L,NC,QSA]

但我似乎遇到了 css 问题。 style.css 文件似乎被视为 HTML 文件,我不明白为什么

RewriteEngine On
RewriteBase /
#if file exist, serve the file
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/?$ index.php?p= [L,NC,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?p=&n= [L,NC,QSA]

此解决方案似乎有效。 有必要在重定向之前放置检查文件是否存在的规则,以便不重定向对 css 文件的请求。