网址重写不适用于Apache

简·彼得

我想要以下内容:

myhomepage.com <-这应该变成这个-> myhomepage.com/index.php

myhomepage.com/mypage <-应该转向这个-> myhomepage.com/index.php?page=mypage

myhomepage.com/mypage/mymethod <-应该转向这个-> myhomepage.com/index.php?page=mypage&method=mymethod

myhomepage.com/api/logout <-应该转向这个-> myhomepage/api/logout.php

这是我的.htaccess文件:

RewriteEngine On

RewriteBase /

RewriteRule ^/api/(.*)$ api/$1.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)$ index.php?page=$1&method=$2&item=$3

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?page=$1&method=$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1

一切正常,但规则api似乎不起作用。

更新1:

RewriteRule ^/api/(.*)$ api/$1.php

当我打电话给myhomepage.com/api/logout它重写myhomepage.com/index.php?page=api&method=logout

更新2:

我的第一个想法是,也许有一个类似默认的rewrite_module的东西。它将所有不是文件的内容都重写为index.html或类似的内容。特别是当我使用XAMPP时。

更新3:

经过一番试验后,我发现无法使用它,api因为它是目录。例如,当我用重写myhomepage.com/ap/logoutRewriteRule ^ap/(.*)$ api/$1.php它工作正常。有什么想法如何使目录名称起作用吗?

更新4:

我将链接todo.js(从Windows / System32 / drivers / etc中的主机)重定向到127.0.0.1,然后编辑httpd-vhosts.conf并添加了以下内容:

<VirtualHost todo.js:80>
    ServerAdmin [email protected]
    DocumentRoot "C:/xampp/htdocs/todo"
    ServerName todo.js
    ServerAlias todo.js
</VirtualHost>

我的api文件夹是htdocs/todo

*解决方案:*

这是我的问题的最终解决方案:

ErrorDocument 404 /error.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule api/([^/]+)/?$ api/$1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)/(.*)$ index.php?page=$1&method=$2&item=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.*)$ index.php?page=$1&method=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

特别感谢anubhava!

阿努巴瓦

前导斜杠不匹配,.htaccess因为.htaccess是每个目录指令,并且Apache从RewriteRuleURI模式中剥离了当前目录路径(因此是前导斜杠)

DOCUMENT_ROOT/.htaccess文件中使用以下规则

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule api/([^/]+)/?$ api/$1.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/(.*)$ index.php?page=$1&method=$2&item=$3 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.*)$ index.php?page=$1&method=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

网址重写不适用于相对路径

来自分类Dev

网址重写不适用于iframe express.js

来自分类Dev

htaccess网址重写不适用于配置设置

来自分类Dev

URL重写规则不适用于localhost(Apache)

来自分类Dev

Docker中的Apache重写不适用于PHP文件

来自分类Dev

Apache2:<文件>不适用于重写替换

来自分类Dev

Docker中的Apache重写不适用于PHP文件

来自分类Dev

Apache .hatccess重写不适用于旧版URL

来自分类Dev

URL重写不适用于目录

来自分类Dev

URL重写不适用于.htaccess

来自分类Dev

网址重写不适用于one.com提供程序

来自分类Dev

PHP包含的图片和图片不适用于重写的网址

来自分类Dev

PHP包含的图片和图片不适用于重写的网址

来自分类Dev

与 Apache 2.2 一起使用的重写不适用于 Apache 2.4

来自分类Dev

htaccess未重写的参数不适用于重写的参数

来自分类Dev

URL重写不适用于ZF和apache2

来自分类Dev

别名不适用于Apache 2.4

来自分类Dev

htaccess重写规则不适用于首页

来自分类Dev

.htaccess重写规则不适用于我

来自分类Dev

Htaccess Mod重写不适用于漂亮的URL

来自分类Dev

URL重写不适用于特定的后缀

来自分类Dev

IIS重写不适用于简单重定向

来自分类Dev

重写规则不适用于分页

来自分类Dev

分页不适用于自定义重写规则

来自分类Dev

CORS不适用于其他网址

来自分类Dev

循环不适用于csv文件中的网址

来自分类Dev

href不适用于mpdf中的动态网址

来自分类Dev

省略号不适用于长网址

来自分类Dev

身份验证网址不适用于Icecast