难倒在这里。在使用Mod-rewrite时,是否需要了解一些文件结构“变量范围”概念?
我有一个像这样的文件结构
/modules/modulename/index.php(此文件导入包含文件form_inc.php /modules/modulename/form_inc.php
如果我回复到同一个文件/modules/modulename/index.php,则没有可用的帖子数据。
如果我发布到根域中的文件,则会有帖子数据。 ???
我应该注意,结构中的索引文件是一个真实的文件,但它是从根目录下的index.php调用的。所以基本上我有从根index.php处理的SEF URL。但我想在我的modules文件夹中有一个php文件来处理表单。在我尝试添加SEF URL之前,所有这些都有效。
离。 www.mydomain.com/contact-us/form包含来自/modules/contactform/index.php的表单,表单的操作正在尝试使用/modules/contactform/process.php,但没有发布数据!但是有根index.php的帖子数据是我的主要“路由器”文件。如果我把我的process.php文件放在teh root中就行了。但不是我想要那个文件的地方。
这是我的mod重写规则
Options +FollowSymLinks
RewriteEngine On
#RewriteBase /orientation_dev
RewriteBase /
#if the file exist pass it on thru and exit.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+) $1 [L]
#if the file NOT a directory redirect to index
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?q=$1 [L]
RewriteRule ^(.+)$ $1/ [L,R=301]
感谢您对此有任何见解!
答案 0 :(得分:0)
发现此代码似乎解决了我的POST DATA问题。我认为我的帖子也被重定向,这是我以前的mod重写规则所没想到的。
# 301 Redirect all requests that don't contain a dot or trailing slash to
# include a trailing slash
# except for form POSTS
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L,NE]
# Rewrites urls in the form of /parent/child/
# but only rewrites if the requested URL is not a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?q=$1 [QSA,NE]