繁体   English   中英

URL重写不适用于.htaccess

[英]URL Rewrite not working on .htaccess

我已经在实时服务器上实现了我的小型网站,但是我想对某些链接使用url-rewrite使其干净。 我在我的本地主机服务器上尝试:

http://localhost/cb/2/login.phphttp://localhost/cb/2/login

我设法通过编辑apache的httpd.conf并启用url-rewrite使它在我的本地主机服务器上工作。 这是我添加到apache的规则:

<IfModule mod_rewrite.c>  
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^/cb/2/login$ /cb/2/login.php   
</IfModule>

但是,当我将文件上传到活动服务器时,显然我没有编辑该服务器的httpd.conf的权限,因此我只将重写规则放在.htaccess文件中,这是它的内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/login$ /login.php [L,QSA,NC]

但是,当我尝试对其进行测试时, 404 not found是服务器的响应。 我还尝试在我的本地主机服务器上实现,前提是我无法编辑apache配置并且发生相同错误, Object not found!

我不知道下一步该怎么做。 我是该网址重写规则的新手,因此将非常感谢您的帮助:)

请试试:

Options All -Indexes
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /index.php

更新

经过与OP的漫长讨论之后,似乎幕后还有很多事情要做。

最终结果是无论放在.htaccess文件中的内容是什么...它都不起作用。

建议OP与虚拟主机联系,但我将下面的原始答案留给网站上的其他人使用。


从您的重写规则中删除正斜杠

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^cb/2/login$ cb/2/login.php [L,QSA,NC]

当您将其放在实时服务器上时,更改了在本地主机上使用的重写规则。 假设目录结构相同,则应保持重写规则相同(减去正斜杠)。

记住在重写规则中...

1) ^$之间的文本是访客将在URL栏中输入的内容,链接的内容以及访客在URL栏中看到的内容。

2)下一个块是实际文件所在的位置。

编码愉快!

更新

如果您希望访问者访问www.examplewebsite.com/login.php并且希望该网址看起来像www.example.com/login ...,那么您的重写规则就是...

RewriteRule    ^login$    login.php    [L,QSA,NC]    # Handle log-in

现在...假设您的login.php位于另一个名为admin目录中...

RewriteRule    ^login$    admin/login.php    [L,QSA,NC]    # Handle log-in

这两行表示...

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

如果该网址不是“真实”目录,或者该网址不是“真实”文件...,则处理规则。

这就是为什么使用RewriteRule ^login$ index.php会将您的网址重写为www.examplesite.com/login.php原因,因为无法处理重写规则(找不到index.php),但login.php是“真实”文件...。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM