我有这个.htaccess文件:
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie$ galerie.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie/$ galerie.php?user=$1 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)/$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
RewriteRule ^(.*).php?$ index.php?request=$1 [QSA,L]
它似乎没有用。
以下是我的问题:当我想访问我网站上的网页时,例如site.com/test.php
,
它重定向到index.php?request=test
。问题是我还有“profil.php”和“galerie.php”,我不想通过index.php
。相反,当我执行此操作时:site.com/username/profil
,我希望它指向profil.php?user=username
,但它不起作用。
有什么建议吗?
答案 0 :(得分:1)
我做了这样的事情:
RewriteCond %{REQUEST_URI} !^(.*)\.php?$
RewriteRule ^(.*)\.php?$ index.php?request=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/personal$ personal.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/personal/$ personal.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie$ galerie.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/galerie/$ galerie.php?user=$1 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
RewriteRule ^(.*)/galerie-(.*)_(.*)/$ galerie_poze.php?user=$1&album=$2&page=$3 [NC]
当我做/用户名或/用户名/ profil它工作,但它不再适用于第一个规则ID我做sitename.tld / test.php它不起作用....
答案 1 :(得分:0)
您希望您的两个第一条规则中的一条与[username]/profil
匹配(现在它与[username]
和[username]/
匹配)
尝试
RewriteRule ^([a-zA-Z0-9_-]+)/profil$ profil.php?user=$1 [NC, L]
答案 2 :(得分:0)
使用条件。
确保文件或目录不存在:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
您还可以使用以下内容限制重定向:
RewriteCond %{REQUEST_URI} !^/profil\.php$ [NC]
确保正确逃脱。 这需要转义:
RewriteRule ^(.*).php?$ index.php?request=$1 [QSA,L]
像:
RewriteRule ^(.*)\.php?$ index.php?request=$1 [QSA,L]
此外,
RewriteRule ^([a-zA-Z0-9_-]+)$ profil.php?user=$1 [NC]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profil.php?user=$1 [NC]
可以简化为:
RewriteRule ^([a-zA-Z0-9_-]+)/?$ profil.php?user=$1 [NC]