2015-11-25 30 views
1

使用WamServer,我用Generate It!过度写这样重写国防部仍返回原始地址

原始URL网址:

http://localhost/CMS/foo.php?id=2&slug=eyeglasses 

的重写URL:

http://localhost/2/eyeglasses.php 

的规则,网站给我的是

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)\.php$ /CMS/foo.php?id=$1&slug=$2 [L] 

但是这仍然是恢复原来的URL

http://localhost/CMS/foo.php?id=2&slug=eyeglasses 

能否请你让我知道我做错了什么?

更新

更明确!我有一个index.php包含了像

echo '<a href="foo.php?id='. $theID .'&slug='. $slug .'" class="list-group-item" data-id="'.$theID.'">'.$theName.'</a>'; 

一个环节,现在我们用户foo.php登陆网址看起来像

http://localhost/CMS/foo.php?id=1&slug=eyeglassess 

是否正确?我想这样做是显示

http://localhost/2/eyeglasses.php 

,而不是原来的URL

+0

请说明。你是否从浏览器发送URL'http://localhost/CMS/foo.php?id = 2&slug = eyeglasses',并期待它在浏览器地址栏中被重写为'http:// localhost/2/eyeglasses .php“,或者你是否从浏览器发送了'http:// localhost/2/eyeglasses.php',它将重定向而不是内部重写为'http://localhost/CMS/foo.php?id = 2&slug = eyeglasses'?如果第一个问题是你所看到的,那通常不是如何使用mod_rewrite,并且需要几条额外的线来制定。 –

+0

换句话说,mod_rewrite不能在你的代码中自动转换URL或者在野外转换。它通常用于将干净的URL路由到更复杂的应用程序中。 –

+0

感谢迈克尔,我实际上有一个'index.php'页面,我有链接'\t echo''.$theName.'';'现在在foo.php中的'foo.php'而不是'http:// localhost/CMS/foo.php?id = 2&slug = eyeglasses'我想在网址 – Behseini

回答

1

你需要注册一个重定向规则,旧网址重定向到URL漂亮。此代码应在/CMS/.htaccess

RewriteEngine On 
RewriteBase /CMS/ 

# redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} /CMS/+foo\.php\?id=([^\s&]+)&slug=([^\s&]+) [NC] 
RewriteRule^%1/%2.php? [R=302,L,NE] 

RewriteRule ^([^/]+)/([^/]+)\.php$ foo.php?id=$1&slug=$2 [L,NC,QSA] 

但是这是更好地改变你的链接代码,以新的漂亮的链接方案。

+0

感谢这正是我正在寻找,但!为什么我得到'Not Found'页面! – Behseini

+0

'http:// localhost/2/eyeglasses.php' – Behseini

+0

有没有什么办法摆脱ID?我的意思是保持它像'http:// localhost/eyeglasses.php'' – Behseini