我想重定向到所请求的文件名,以便有人输入
www.example.com/user/1
它应该重定向到user.php
文件,并允许有人输入
www.example.com/apple/3
或www.example.com/apple
哪些不存在,但它应重定向仍然重定向到苹果,它将自动提供404
我不知道如何做到这一点我发现这里的代码可以正常工作,但即使我输入苹果,也会将所有内容重定向到index.php
ErrorDocument 404 /404.php
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 index.php
RewriteRule ^(.*)$ index.php?get=$1 [L]
编辑: 更多细节
可以RewriteRule ^(.*)$ index.php?get=$1 [L]
是动态的,而不是index.php它从网址获取请求的一个吗?
因此,如果用户输入www.example.com/{requested URL?something=something}
然后我希望.htaccess
重定向到{requested URL/something/something}
并且所有动态都是动态的,如果用户键入汽车或梨或兔子/ 3它将重定向到该页面而不在{{{ 1}}喜欢htaccess
我希望每件事都是动态的,就像这样rabbit.php?someting=someting
好好经过大量的Google / Youtube / Stackoverflow研究并将随机内容放在一起后,我终于得到了部分可以在这里工作的东西:
RewriteRule ^(.*)$ {requested URL?something=something}?get=$1 [L]
我注意到有两个问题
1:给予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]
将导致500内部错误,但如果我写www.example.com/car/1
它可以正常工作。我怎么做它所以我可以去car / 1,它不会给500内部错误
2:如果我写www.example.com/car
或www.example.com/somethingthatdoesnotexist
,它会给出500内部,但应该重定向到404但是找不到
我该怎么做?
答案 0 :(得分:0)
在.htaccess文件中,使用以下命令:
Options -MultiViews
RewriteEngine On
RewriteRule ^user$ user.php
RewriteRule ^user/$ user.php
RewriteRule ^user/([a-zA-Z0-9\-\_]+)$ user.php?user=$1
如果您现在使用类似个人资料/用户名的链接,则会显示用户个人资料。
它可能搞砸一些jss文件,如果它在头部使用的页面上:
<base href="/" />
这应该纠正任何css / js / image链接