2012-05-08 35 views
0

我有一个RewriteRule,可以将我重定向到相应的页面。问题是,当我将鼠标悬停在重定向的页面上的链接,我的这个页面上的任何链接的网址已被更改如下:mod_rewrite维护“更改的URI”

正确的链接:重写规则后http://www.mysitelcom/newClients.php

链接:http://www.mysite.com/samples/article-title-goes-here/23/newClients.php它“前缀'下一个文件请求与samples/article-title-goes-here/23 /这是我的RewriteRule的模式部分。

我的.htaccess文件是:

# Use PHP5 Single php.ini as default 
AddHandler application/x-httpd-php5s . 
RewriteEngine on 
RewriteBase/
# Do not do anything for already existing files and folders 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^sample/([a-zA-Z0-9-]+)/([0-9]+)$ sample.php?id=$2 [L] 

谁能帮助我理解我缺少的是什么?不知何故,我必须“重置”我的URI,以便它不会“改变”下一个请求的文件名。谢谢你的任何想法。

+1

这不是mod_rewrite问题。 mod_rewrite唯一能做的就是改变Web服务器处理请求的方式。它无法即时编辑您的网页 - 要更改页面上的链接,您需要编辑网页本身。如果您有任何可在网页上生成网址的代码,那就是您需要发布的内容。 –

+0

我想我需要澄清......没有我的RewriteRule,我的所有链接都按预期行事。我的网站是一个简单的PHP网站。如上所述,我修改了代码以显示友好的网址。我的RewriteRule正确重定向到适当的页面。我的rewriteRule似乎正在重写每个链接......当我将鼠标悬停在任何链接上时,它会在上面显示的根目录后插入友好的URL部分。难道是mod_rewrite已经改变/记住了URI路径。我觉得我需要以某种方式重置。正如我所提到的,如果我没有点击我的任何友好的URL,我很好。 – Leslie

+0

同样,这不是mod_rewrite的工作原理。当您将鼠标悬停在页面上时,它不能也不会影响页面上显示的链接。您应该查看生成页面的PHP代码 - 是否在任何时候使用当前页面的URI来生成链接? –

回答

0

至于我,我才发现,这是在我的引擎链接和路径总是正确使用这种很好的解决方案:在我的settings.php定义

<?php 
    $path_server = 'htdocs/mysite'; # server path for including files 
    $path_www = 'http://mysite.com'; # path to use in links 
?> 

所以

全局变量我模板(它们与settings.php的范围相同)我写

<?php include "{$path_server}/menu.php"; ?> 
<a href='<?php echo $path_www; ?>/link1.html'>link1</a>