mod_rewrite查询。将文件更改为文件夹

时间:2014-02-18 22:25:53

标签: apache .htaccess mod-rewrite

我想更新网址以显示文件夹名称,而不是单个文件。 我相信这可以使用 mod_rewrite 来完成,但我似乎无法让它工作。这是在本地网络设备上,而不是公共服务器上。 PHP是版本4。

跑步:

<?php
print_r(apache_get_modules());
?>

我明白了:

  Array
(
    [0] => core
    [1] => mod_access
    [2] => mod_auth
    [3] => mod_include
    [4] => mod_log_config
    [5] => mod_env
    [6] => mod_setenvif
    [7] => mod_ssl
    [8] => prefork
    [9] => http_core
    [10] => mod_mime
    [11] => mod_status
    [12] => mod_autoindex
    [13] => mod_asis
    [14] => mod_cgi
    [15] => mod_negotiation
    [16] => mod_dir
    [17] => mod_imap
    [18] => mod_actions
    [19] => mod_userdir
    [20] => mod_alias
    [21] => mod_rewrite
    [22] => mod_so
    [23] => sapi_apache2
)

这表明mod_rewrite已启用。

我的目录结构是: 10.10.10.1/local/accounts/payments

在付款中,我有多个 .php 文件,而不是每个文件在地址栏中显示为filename.php,我更愿意只显示 http://10.10.10.1/local/accounts/payments < /强>

在付款文件夹中,我创建了一个 .htaccess 文件并包含:

RewriteEngine on
RewriteRule ^*\.php$ /local/accounts/payments

但地址栏中没有任何变化。谁能告诉我我做错了什么。

由于

更新

对不起我认为我不是很清楚。

我想改变

http://10.10.10.1/local/accounts/payments/bacs.php 

http://10.10.10.1/local/accounts/payments

或付款中的任何php文件只显示付款而不是文件名。

由于

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你想要那个网址

http://10.10.10.1/local/accounts/payments/rent

重写

http://10.10.10.1/local/accounts/payments/rent.php

在这种情况下:

RewriteRule ^local/accounts/payments/(.*)$ local/accounts/payments/$1.php

答案 1 :(得分:0)

在htaccess文件中尝试一下,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^local/accounts/payments/([^/]+)$ /local/accounts/payments/$1.php [NC,L]

如需澄清,如果您希望以下网址显示在地址栏中

http://10.10.10.1/local/accounts/payments/somefilename

然后上面的规则应该有效。如果付款实际上是一个文件,即payments.php,那么它将使用此规则。

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^local/accounts/([^/]+)$ /local/accounts/$1.php [NC,L]