0

我的 HTACCESS 文件目前如下所示:

RewriteEngine On        
RewriteBase /

# stop directory listings
#Options -Indexes 

#stops htaccess views
#<Files .htaccess>
#order allow,deny
#deny from all
#</Files>        

# redirect game folders     
RewriteRule ^games/([^/]+)/([^/]+) games.php?author=$1&slug=$2 [L]   

# redirect edit     
RewriteRule ^protected/edit-game/([^/]+)/([^/]+) protected/edit-game.php?author=$1&slug=$2 [L] 
RewriteRule ^admin/edit-game/([^/]+)/([^/]+) admin/edit-game.php?author=$1&slug=$2 [L]

# redirect view     
RewriteRule ^protected/view-game/([^/]+)/([^/]+) protected/view-game.php?author=$1&slug=$2 [L]   

# redirect user
RewriteRule ^page/([^/]+) user.php?user=$1 [L]  

# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]     

# remove index
RewriteRule (.*)/index$ $1/ [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]   

ErrorDocument 404 /error-404.php

我有一个新的要求,所以当有人去 www.domain.com/im-a-page-in-database

它转到我的 page.php,获取隐藏的“slug”->“im-a-page-in-database”并查询返回该特定页面对象的数据库。

问题是,如果我在我的 HTACCESS 文件中添加如下内容:

# redirect pages/posts 
RewriteRule ^([^/]+) page.php?slug=$1 [L]     

它只是覆盖所有以前可能成功的重写并显示我的 page.php,无论它放在 htaccess 文件中的什么位置?我认为 L 的意思是如果规则被认可......它应该停止尝试做事。所以如果我把我的新行放在我所有的重定向下,它应该最后做页面检查..但是不行:(

有任何想法吗?

4

1 回答 1

0

也许那是因为您的 301 重定向?浏览器会缓存这些重定向,因此您必须尝试使用​​其他浏览器或清除缓存。

于 2012-06-14T20:10:23.693 回答