1
我知道public in URL
有很多匹配,但是我想要一個解釋。解釋:Apache Rewrite,公開於URL
Apache配置:
<VirtualHost *:80>
ServerName localhost
ServerAdmin [email protected]
DocumentRoot /sites/MVC/public
<Directory /sites/MVC>
Options +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
公共/ htaccess的:
Options -MultiViews -Indexes
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*) /index.php?url=$1 [QSA,L]
基本上當我嘗試print_r()
接收到的URL,它打印公共作爲數組的第一個元素。該URL http://127.0.0.1:8080/this/that
將產生這樣的輸出:
Array ([0] => public [1] => this [2] => that)
爲什麼公共包含在URL時,未明確表明
?
編輯
附:對於任何人想知道; 127.0.0.0.1:8080
解析爲端口80的原因是因爲它是通過由Vagrant管理的VM託管的。
index.php
創建了一個App
的實例,該實例分解了URL。
App.php:
class App {
// Defaults. This will default the app to home/index with 0 parameters
protected $controller = "home";
protected $method = "index";
protected $params = [];
public function __construct() {
print_r($this->parseUrl());
}
private function parseUrl() {
if(isset($_GET['url'])) {
return $url=explode('/', filter_var(rtrim($_GET['url'], '/'), FILTER_SANITIZE_URL));
}
}
}
您將需要查看'index.php'並按照如何分解url。該htaccess將把'http://127.0.0.1:8080/this/that'變成'http://127.0.0.1:8080/index.php?url = this/that'。 'index.php'中的某些內容將使用變量'$ url'並將其分割成一個數組。 – Styphon
@Styphon我已經包含了分解URL的代碼,也許你看到了我錯過的東西。 – Warosaurus
如果你print_r($ _ GET ['url']);'? – Styphon