面对.htaccess重写URL中的问题

时间:2014-01-23 08:06:43

标签: php apache .htaccess url

我正在用.htaccess重写我的网站网址,但遇到问题,我不知道重写网址,我只是复制并粘贴来自互联网的代码,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ page.php? [L,QSA]

这适用于我并重定向, www.domain.com/page.php?id=1 www.domain.com/page?id=1

但是当我打开 www.domain.com/someotherpage.php 时会出现问题,然后它会将我重定向到 page.php

还有我在URL中随机编写的 www.domain.com/page

domain.com/any
domain.com/thing
domain.com/written

我做了一些关于这个问题的研究,但是找不到任何解决方案,然后我在这里问了我的问题。

3 个答案:

答案 0 :(得分:0)

尝试使用此代码添加.php扩展程序:

RewriteEngine On

# show 404 for .php requests
RewriteCond %{THE_REQUEST} \.php[?\s/] [NC]
RewriteRule ^ - [R=404,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

答案 1 :(得分:0)

您应该只使用mod_negotiation并启用Multiviews:

Options Multiviews

答案 2 :(得分:0)

我建议将允许的文件放在根目录

RewriteRule !\.(js|ico|txt|gif|jpg|png|css|swf|JPG|jpeg|html|woff|ttf|svg|htm|cur|PNG|JPEG|GIF|php|whatever_file_type)$ index.php

如果你想在public /目录中访问index.php以外的php脚本,请尝试在zend框架中运行的solition。