0

我有这个 .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,但它不起作用。

有什么建议么?

4

3 回答 3

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]

当我做 /username 或 /username/profil 它工作但它不再适用于第一个规则 id 我做 sitename.tld/test.php 它不起作用....

于 2012-07-15T08:53:40.177 回答
0

您希望您的前两个规则中的一个匹配[username]/profil(它现在匹配[username][username]/

尝试

RewriteRule ^([a-zA-Z0-9_-]+)/profil$ profil.php?user=$1 [NC, L]
于 2012-07-13T19:42:38.680 回答
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]
于 2012-07-13T19:42:42.987 回答