URL重写不工作.htaccess
我已经在一个活的服务器上实现了我的小网站,但是我想使用一些链接的url-rewrite来使它变得干净。我试试这个我的本地服务器上:URL重写不工作.htaccess
http://localhost/cb/2/login.php
到http://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中是一个“真正”的文件....如此这般到它。
请尝试:
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
如果我有一个示例域名“www.sampledomain.com”这是我如何重写规则?'重写规则^ www.sampledomain.com/login $ www.sampledomain.com/login.php [L,QSA,NC]' – LeViNcE
不,你不需要域部分。需要正斜杠,我会的更新我的答案进一步解释 – Kuya
代码现在在我的本地主机上工作,但我不知道它没有在我的托管网站上工作。这是列出的功能之一:'mod_rewrite enabled(apache 2.2);全点文件支持(.htpasswd,.htaccess - 设置自定义错误页面的可能性,阻止不需要的ips /站点,打开/关闭索引等);' – LeViNcE