.htaccess在线重写规则和localhost

时间:2015-10-13 09:39:32

标签: .htaccess

在本网站和wamp localhost上

http://www.aproapetot.ro/page.php?categ_id=1&id=1

http://localhost/aproapetot-backup/page.php?categ_id=1&id=1

我尝试构建.htaccess,但没有任何成功。

这是我在网站上写的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^page-([0-9]+).html$ page.php?categ_id=$1
RewriteRule ^page\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</IfModule>

和本地主机

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /aproapetot-backup/
RewriteRule index.php index.html 
RewriteRule ^page-([0-9]+).html$ page.php?categ_id=$1
RewriteRule ^page\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</IfModule>

有人请帮忙。

这是一个带笑话的网站,所以在.ro / page.php之后?categ_id = 1&amp; id = 1我有一个类别(1)和子类别(1)。 我想要这样 .ro / jokes / doctors而不是现在如何。

1 个答案:

答案 0 :(得分:0)

根据htaccess内容,我不完全确定你想要什么,但我明白你想要/笑话/医生被重写为/pages.php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !pages.php [NC]
RewriteRule ^(.*)$ /pages.php [L]

上述代码将重写对pages.php的所有请求,只要:

  • %{REQUEST_FILENAME}“! - f”:服务器上不存在文件本身。
  • %{REQUEST_FILENAME}!pages.php:请求未发送到pages.php(意味着它已经被重写)

最后,您可以使用PHP来获取参数:

/* Get all parameters from the URL */
$_GET['path'] = rawurldecode( $_SERVER['REQUEST_URI'] );
/* Remove double slashes and backslahses and convert all slashes and backslashes to '/' */
$_GET['path'] = preg_replace( array('#[/\\\\]+#', '/(\/\.)+(\/)/'), '/', $_GET['path']);


$_GET['path'][0] should contain "jokes"
$_GET['path'][0] should contain "doctors"

==编辑==

使用htaccess重定向(不是最好的方法)

Redirect 301 /page.php?categ_id=6&id=0 /anecdotes
Redirect 301 /page.php?categ_id=1&id=1 /jokes/doctors

PHP(或其他服务器端脚本)。您可以检查网址是否实际上有数字(请参阅$_SERVER['REQUEST_URI']),如果是,请在页面中添加一些标题重定向。

<?PHP
header('Location: www.aproapetot.ro/' . $cat . '/' . $subcat );
?>