English 中文(简体)
如何只使用 mo-螺旋式照相机查阅PHP文档,以及用可分的nat方式查阅PHP档案?
原标题:How to only use mod_rewrite to access PHP files and disable natual way to refer to the PHP file?

我对这些问题非常新,请提供帮助。

我有两个问题涉及改写(原第2.2条)。

(1) 我想要做的是,例如,把rite/log改成 log。 可以通过这样做

RewriteRule ^/?login/?$ /login.php [L]

然而,我也想做的是让残疾的用户能够进入/。 php直接。

如果是我写的话,

RewriteRule ^/?.*.php$ /file_not_exist.html [L]

This doesn t work and even /login will be rewritten to /file_not_exist.html.

是否有办法这样做? 我注意到,在帕帕帕帕奇2.5文件中,有国旗,但我却可以在阿帕奇2.2中使用。

2) 我愿取代所有亚克斯要求,即:

RewriteRule ^/?ajax/([a-zA-Z]+)/?$ /ajax/$1.php [L]

然而,当我试图进入Xyz的地方时。 php确实存在,浏览器将显示“/ajax/xyz.php”确实存在,这就使ppl知道,/ajax/action是由/ajax/action实施的。 php。

如何消除这种/jax/xyz.php? 我认为,现在的唯一途径是把所有档案按jax方向列出,并做到如下:

Rewrite Rule ^/?ajax/(action1 action2 ́3)/?$/ajax/$1.php [L]

然后,当用户查阅/ajax/xyz时,它只是说/ajax/xyz确实存在,但不是/ajax/xyz.php。 但这非常麻烦。 是否有更好的办法这样做?

非常感谢!

最佳回答

(1) 如果你想要限制要求/login.php,你需要利用RewriteCond检查实际要求。 否则,你就会重新进入 lo。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /login.php
RewriteRule ^ /file_not_exist.html [L]

You could also redirect them to /login if you want and let the first rule take care of it:

RewriteRule ^ /login/ [L,R=301]

2) You can check if an actual file exists before you rewrite the php, again by using RewriteCond and checking using "-f"

RewriteCond %{REQUEST_URI} ^/ajax/(.+)/?
RewriteCond %{DOCUMENT_ROOT}/ajax/%1.php !-f
RewriteRule ^ /ajax/no_action.php [L]

因此,首先,我们检查的是,从“/jax/”开始,我们选择下一部分“(+)”。 在下一次的RewriteCond中,我们利用1%的背书查阅以前的比照。 因此,如果要求“/ajax/blahblah/”,那么下届RewriteCond将检查“/doc_root/ajax/blahblah.php”。 ! 因此,在这个例子中,如果“/doc_root/ajax/blahblah.php”确实存在,那么我们就重新提出“/ajax/no_action.php”的要求。 你必须用你希望处理所有“坏”要求的东西来取代。 也许应该指出,简单地说,没有人会知道智慧。 之后,你可以做一手修改,将/ajax/(+)/改为/ajax/$1.php:

RewriteRule ^ajax/([A-Za-z]+)/?$ /ajax/$1.php [L]
问题回答
 RewriteRule ^/?.*.php$ /file_not_exist.html [L]

This would work. But not when you make it the second RewriteRule. Order is important. See also Serverfault: Everything You Ever Wanted to Know about Mod_Rewrite Rules but Were Afraid to Ask?

更具体地说,如果与-f相匹配,则可以直接通过%{RE RequestST_URI},然后与 /code> 。


我看不到你的第二个问题。 但你似乎应当利用PATH-INFO。

 RewriteRule ^/?ajax/([a-zA-Z]+)/?$ /ajax.php/$1 [L]

由于改写为不存在的<代码>1.php,显然必须产生错误。

(如果这是一份真实的目录,有真实的文字,那么再一次使用<代码>。) RewriteCond with -f test.

Here s what I do for my website: (1) define properly 404 in your vhost, (and this is an answer to your second question: write your own 404 file where you show only what you want. For example check the IP address and if it s local (= dev environment) then show a lot of information)

ErrorDocument 404 /404.php

(2) 禁止直接查阅实验室档案:

RewriteRule (.*)php$ - [L,R=404]

三、本著作





相关问题
Using SimplePie with CodeIgniter and XAMPP

I am using CodeIgniter 1.7.2 with XAMPP 1.7.2 on a Windows computer. I am trying to make use of SimplePie. I followed all the instructions I could find: a copy of simplepie.inc is in my applications/...

Multiple Sites with common files

I have developed over 50 sites that all use the exact same files other than CSS and IMAGES, I currently duplicate the files each time I create a new site and upload different css and images. What ...

http server validation

I finish a litle http server, writing from scratch. I would like to be sure that my imlementation is conforme to the HTTP specifications. W3C give us tools for HTML/XML conformance, but i see nothing ...

热门标签