.htaccess htaccess在删除目录和url的部分内容时将无法正常工作

.htaccess htaccess在删除目录和url的部分内容时将无法正常工作,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,由于某种原因,我无法使profile.php?username=消失。我在另一个文件夹中做了完全相同的事情,它正在工作,但不会在这个文件夹中工作,我看不出我的错误。 另一个问题是,我希望页面目录中的文件显示为:localhost/test_a/filename(而真正的位置是localhost/test_a/pages/filename),但我不知道如何在内部重定向到它 RewriteEngine On RewriteBase / # remove /index.php RewriteCond

由于某种原因,我无法使profile.php?username=消失。我在另一个文件夹中做了完全相同的事情,它正在工作,但不会在这个文件夹中工作,我看不出我的错误。 另一个问题是,我希望页面目录中的文件显示为:localhost/test_a/filename(而真正的位置是localhost/test_a/pages/filename),但我不知道如何在内部重定向到它

RewriteEngine On
RewriteBase /

# remove /index.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.php($|\ |\?)
RewriteRule ^ %1 [R=301,L]

# externally redirect /dir/foo to /foo
RewriteCond %{THE_REQUEST} pages/
RewriteRule pages/(.*)$ test_a/$1 [L,NC,R]

# internally forward /foo to /dir/foo
--------------------------------------------------------------what goes here?

#  externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

# internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ test_a/$1.php [L]


# Remove long profile url to simple 'profile/username'
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/(.*)$ test_a/profile.php?username=$1
-------------------------------------------------------why is this not working?

#Deny access to htaccess
<files .htaccess>
    order allow,deny
    deny from all
</files>
重新编写引擎打开
重写基/
#删除/index.php
RewriteCond%{THE_REQUEST}^[A-Z]{3,9}\/(*)index\.php($\\\\\\?)
重写规则^1[R=301,L]
#从外部将/dir/foo重定向到/foo
重写cond%{THE_REQUEST}页/
重写规则页/(*)$test_a/$1[L,NC,R]
#内部转发/foo到/dir/foo
--------------------------------------------------------------这里有什么?
#从外部将/dir/foo.php重定向到/dir/foo
重写cond%{THE_REQUEST}^[A-Z]{3,}\s([^.]+)\.php[NC]
重写规则^1[R,L,NC]
#在内部将/dir/foo转发到/dir/foo.php
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}\.php-f
重写规则^([^/]+)/?$test_a/$1.php[L]
#删除简单“配置文件/用户名”的长配置文件url
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^profile/(*)$test\u a/profile.php?用户名=$1
-------------------------------------------------------为什么这不起作用?
#拒绝访问htaccess
命令允许,拒绝
全盘否定

尝试关闭多视图。在某些安装中,多视图是打开的,它告诉mod_协商尝试并“猜测”请求文件名。在这种情况下,
/profile/asdasds
被猜测为
/profile.php/asdasds
,这将完全绕过mod_重写规则

因此,将此添加到顶部:

Options -Multiviews
关于第一个问题,试试这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/test_a/pages/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/test_a/pages/$1 -d
RewriteRule ^(.*)$ test_a/pages/$1 [L]

选项-多视图没有帮助,页面/没有从url中删除,页面转到404错误