URL重写不工作.htaccess

问题描述:

我已经在一个活的服务器上实现了我的小网站,但是我想使用一些链接的url-rewrite来使它变得干净。我试试这个我的本地服务器上:URL重写不工作.htaccess

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

我设法让它通过编辑阿帕奇的httpd.conf我的本地服务器上运行,并启用URL重写。这是我加入到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配置并发生相同的错误,我不知道接下来我该做什么。我是新来这个URL重写规则,以便任何帮助将非常感激:)

UPDATE

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

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

OP被建议联系网络主机,但我会在网站上为他人留下我的原始答案。


删除前从重写规则斜线

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

你改变了在本地主机上使用,当你把它放在一个活的服务器上的重写规则。假设您的目录结构相同,您应该保持重写规则相同(减去正斜杠)。

记得在重写规则...

1)^$之间的文本是什么访问者将输入到地址栏,是你的链接将是什么,是什么,游客将在url看酒吧。

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

快乐编码!

UPDATE

如果你希望你的访问者去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 

如果URL不是“真正的”目录,或者url不是“真正的”文件...然后处理规则。

这就是为什么使用RewriteRule ^login$ index.php使您的网址被改写为www.examplesite.com/login.php因为重写规则不能被处理(index.php文件找不到),但login.php中是一个“真正”的文件....如此这般到它。

+0

如果我有一个示例域名“www.sampledomain.com”这是我如何重写规则?'重写规则^ www.sampledomain.com/login $ www.sampledomain.com/login.php [L,QSA,NC]' – LeViNcE

+0

不,你不需要域部分。需要正斜杠,我会的更新我的答案进一步解释 – Kuya

+0

代码现在在我的本地主机上工作,但我不知道它没有在我的托管网站上工作。这是列出的功能之一:'mod_rewrite enabled(apache 2.2);全点文件支持(.htpasswd,.htaccess - 设置自定义错误页面的可能性,阻止不需要的ips /站点,打开/关闭索引等);' – LeViNcE

请尝试:

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 
+0

没有任何反应,结果相同 – LeViNcE

+0

删除开始的斜杠:RewriteRule ^(。*)index.php –

+0

现在它可以工作,但是当我在浏览器中键入'/ login'时,它会重写为'/ login.php' – LeViNcE