.htaccess RewriteRule什么都不做

时间:2013-11-25 15:28:36

标签: php apache .htaccess mod-rewrite

道歉,如果对此的答案已经存在,我看了但却找不到有同样问题的人。 mod_rewrite在我的localhost上启用,但我刚刚做的重写规则似乎不起作用。

Options -indexes

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /Website

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Rewrite index.php
    RewriteRule ^Website([^/]*)/$ /Website/?action=$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

我甚至使用了这个mod rewrite generator,但生成的规则也不起作用。我在WordPress本地安装的东西设法可以很好地重写URL,所以我写的代码肯定有问题

我对这个.htaccess的东西不太了解,所以我非常感谢我能得到的任何答案。

感谢。

2 个答案:

答案 0 :(得分:1)

设置RewriteBase后,您无需在RewriteRule

中重新声明它

你的规则应该是......

RewriteRule ^([^/]*)/$ /Website/?action=$1 [L]

那就行了! (这是考虑到你的正则表达式也很好:p)

编辑:(解释)

一旦你设置了RewriteBase mod_rewrite只会查看基础之后的所有内容,那么RewriteRule绝对需要的是/Website/Website([^/]*)/

答案 1 :(得分:0)

试试这段代码:

Options -indexes

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /Website

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # Rewrite index.php
    RewriteRule ^([^/]+)/?$ ?action=$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>

更新

RewriteEngine On
RewriteBase /Website/
RewriteRule ^([^/.]+)/?$ ?action=$1 [L,QSA]