链接重复问题与.htaccess和mod_rewrite

时间:2010-09-28 13:54:09

标签: php .htaccess mod-rewrite

抱歉,我无法想出一个更好的头衔。

这是我的htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L,QSA]

这是我的问题:

localhost / validpage为我提供了localhost / validpage.php的内容。 localhost / validpage / blah也给了我相同的(validpage.php)页面,localhost / validpage / blah / blah / ...也是如此。 因此,我面临的问题是链接 duplicity (用我的话来说!)。

如何仅允许从localhost/validpage.php访问localhost/validpage,而不允许localhost/validpage.php访问{{1}}。

我已经在*Server****Fault***上提出了一个问题,但没有取得多大成功。 我得到的答案是单靠htaccess无法做到。

有效页面是指服务器上的任何有效页面。由于我正在使用mod_rewrite改造现有网站以获得更清晰的网址,因此我正在寻找一种相对简单的解决方案,最好只使用.htaccess。但是,欢迎任何解决方案。

2 个答案:

答案 0 :(得分:1)

你的图像的源属性是什么?等 绝对的还是相对的?

<img src="/images/my.jpg" /><img src="images/my.jpg" />在应用重写规则时指向不同的文件。

答案 1 :(得分:1)

您可以尝试在.htaccess中使用此功能

RewriteEngine on
RewriteBase /

# if request has a php extension remove and redirect
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^((.*)\.php)$
RewriteRule ^(.*).php$ $1 [L,R=301]

# if request uri has no extension link to php file
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

我应该将PHP脚本重写为友好的URL,并使用.php扩展名重定向请求。