通过params并使用漂亮的网址重复$ 1

时间:2015-05-23 07:22:12

标签: php .htaccess

经过大量的Google / Youtube / Stackoverflow研究并将随机事物放在一起后,我终于得到了一些部分可以在这里工作的东西:

ErrorDocument 404 /404.php
Options -MultiViews
RewriteEngine On
RewriteBase /SimpleMVCTest/


#Make sure it's not an actual file
RewriteCond %{REQUEST_FILENAME} !-f

#Make sure its not a directory
RewriteCond %{REQUEST_FILENAME} !-d 
#Rewrite the request to REQUESTED_FILENAME
RewriteRule ^(.*)$ $1.php?get=$1 [L]

我注意到有两个问题

1:给予www.example.com/car/1将导致500内部错误,但如果我写www.example.com/car它可以正常工作。我怎么做它所以我可以去car / 1,它不会给500内部错误

2:如果我写www.example.com/somethingthatdoesnotexistwww.example.com/somethingthatdoesnotexist/1,它会给出500内部,但应该重定向到404但是找不到

我该怎么做?

1 个答案:

答案 0 :(得分:0)

这不是一个非常好的方法,您不应该将所有内容重写为@ViewScoped这样的文件,因为您将尝试请求$1.php之类的文件,这不是您想要的:这将导致内部服务器错误,因为在下次重写时,它会尝试获取car/1.php,然后car/1.php.php等等。

相反,您应该将所有内容重写为固定文件,如car/1.php.php.php,并处理php中的逻辑。您可以获取请求的URL(您甚至可以将其添加为查询变量),解析它并包含或重定向到您想要的任何文件。